VBA-autofilter隐藏单元格的interior.colorindex以#VALUE结束函数

使用VBA进行自动筛选时,我遇到了一个奇怪的问题。 顶行(O1)中的单元格包含对用户定义函数的引用,以检查另一个单元格(F2)的颜色。 如果我手动自动筛选,所以引用的单元格F2被隐藏,该function正常工作。 如果我有一个VBA脚本执行完全相同的filter(我用macroslogging来确保),它返回一个#VALUE! 错误。 在debugging模式下遍历代码,它会触碰到Interior.ColorIndex行,然后静默地退出函数(返回#VALUE!),而不会触及下一个Stop或产生VBA错误。

单元格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 

任何想法发生了什么?

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

 ActiveSheet.Calculate 

在应用VBA过滤之后立即修复它(如手动重新触发公式)