使用VBA进行自动过滤时,我遇到了一个奇怪的问题。顶行(O1)中的单元格包含对用户定义函数的引用,以检查另一个单元格(F2)的颜色。如果我手动自动过滤,以便隐藏引用的单元格F2,则该功能正常工作。如果我有一个VBA脚本执行完全相同的过滤器(我使用宏记录确保),它返回一个#VALUE!错误。在调试模式中逐步执行代码,它会访问Interior.ColorIndex行 - 并以静默方式退出函数(返回#VALUE!),而不会触及下一个Stop或生成VBA错误。
Cell O1包含:
=stupidFunction()
VBA代码:
Function stupidFunction()
Application.Volatile True
Calculate
Stop
stupidFunction = Range("F2").Interior.ColorIndex
Stop 'VBA autofilter never gets here, manual autofilter does!
End Function
Sub TestFilter()
'
' TestFilter Macro
'
'
ActiveSheet.Range("$A$1:$F$82").AutoFilter Field:=6, Criteria1:= _
"=*Approval*", Operator:=xlAnd
End Sub
知道发生了什么事吗?
答案 0 :(得分:0)
我可以确认相同的行为,但添加
ActiveSheet.Calculate
应用VBA过滤后立即修复它(手动重新触发公式)