VBA-autofilter隐藏单元格的interior.colorindex函数与#VALUE一起使用

时间:2017-02-09 16:06:18

标签: excel vba excel-vba

使用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

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

我可以确认相同的行为,但添加

ActiveSheet.Calculate 
应用VBA过滤后立即

修复它(手动重新触发公式)