VBA 自动筛选器得到错误的结果

VBA autofilter gets wrong results

提问人:JulioBarcellos 提问时间:10/24/2023 最后编辑:FunThomasJulioBarcellos 更新时间:10/24/2023 访问量:44

问:

我制作了一个宏,在列上输入 vlookup 公式,然后它只过滤 #N/D 结果。此工作簿由 4 个不同的用户在他们自己的计算机上使用。在 3 台计算机上,它可以工作,但在 4 台计算机上,它会过滤 #N/D,但不会“显示”结果。 我不知道发生了什么,你能帮忙吗?

代码:

Application.ScreenUpdating = False

Dim wb As Workbook, wb2 As Workbook
Dim lastRowWithData
Set wb = ActiveWorkbook
Set wb2 = Workbooks.Open("\\server\path\file.xlsx")
wb2.Activate
Application.CutCopyMode = False
wb2.Sheets("NFe").Select
Range("X1").Value = "Procv"
wb2.Sheets("NFe").Range("X2").Select
ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[-21]&RC[-19],'\\server\path\[file2.xlsm]SheetName'!C2,1,0)"
lastRowWithData = GetLastRowWithData
wb2.Sheets("NFe").Range("X2").Select
Selection.AutoFill Destination:=Range("X2:X" & lastRowWithData)
wb2.Sheets("NFe").Range("X1").Select
Selection.AutoFilter Field:=24, Criteria1:="#N/D"

这是第 4 台计算机显示的内容(Selection.AutoFilter Field:=24, Criteria1:=“#N/D”的调试模式):excel worksheet showing no records but the filter is right

当我在计算机上执行相同的操作时,或者当我手动打开过滤器(如上图所示)并单击“确定”时,它会正确显示结果:Excel worksheet showing 434 records with the #N/D result of vlookup

VBA Excel-2007 自动筛选

评论

0赞 Paul 10/24/2023
所有电脑是否都位于相同的区域设置中?#N/D 是西班牙语特有的;如果 PC 设置为英语(或几乎任何其他语言),它将无法工作。
0赞 JulioBarcellos 10/24/2023
是的,它们都为巴西葡萄牙语做好了准备
0赞 FunThomas 10/24/2023
只是一个猜测。您正在引用外部工作簿(从服务器)。当您通过代码应用过滤器时,可能没有完成公式值的计算。
0赞 JulioBarcellos 10/24/2023
我在过滤器命令上方放置了一个“计算”命令进行测试,并检查了第 4 台 PC 是否进行了手动计算,但事实并非如此:(
1赞 Tim Williams 10/24/2023
有问题的 PC 是否甚至在工作表上显示 #N/D(即在应用过滤器之前)?

答: 暂无答案