【问题标题】:interior.colorindex on VBA-autofilter hidden cell ends function with #VALUEVBA-autofilter隐藏单元格上的interior.colorindex使用#VALUE结束函数
【发布时间】:2017-02-11 09:15:34
【问题描述】:

我在使用 VBA 进行自动过滤时遇到了一个奇怪的问题。顶行 (O1) 中的单元格包含对用户定义函数的引用,以检查另一个单元格 (F2) 的颜色。如果我 手动 自动过滤以隐藏引用的单元格 F2,则该函数可以正常工作。如果我有一个执行 EXACT SAME FILTER 的 VBA 脚本(我使用 Macro Record 来确保),它会返回一个 #VALUE!错误。在调试模式下单步执行代码,它会点击 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

知道发生了什么吗?

【问题讨论】:

  • 你有模块中的功能码还是表单码?
  • AFAIK 您无法访问 UDF 中的其他单元格。
  • 函数在一个模块中。只要我不使用 VBA 启动的自动过滤器,函数就完美地工作。虽然您无法更改 UDF 中的任何单元格(内容、格式、颜色等),但您可以查看其他单元格的属性。
  • 对不起,我完全误读了这个问题。
  • 我可以确认相同的行为,但在应用 VBA 过滤后立即添加 ActiveSheet.Calculate 可以修复它(手动重新触发公式也是如此)

标签: vba excel


【解决方案1】:

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

ActiveSheet.Calculate 

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

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    相关资源
    最近更新 更多