我在vba中创建了一个函数来确定行是否可见。如果可见则该函数返回1,如果不可见则返回0。该函数如下所示:
Function IsRowVisible(MyRange As Range) As Integer
If (MyRange.EntireRow.Hidden = False) Then
IsRowVisible = 1
Else
IsRowVisible = 0
End If
End Function
然后我在工作簿中有一个列,我在公式中引用此函数,例如: = IsRowVisible(A1)
公式返回#VALUE!直到我运行一个运行其他代码的宏或直到我单击公式并按Enter键。然后它工作正常。
我希望它像Excel中的普通函数一样工作,在打开工作簿时会返回一个值。我哪里错了?
感谢您的帮助!
答案 0 :(得分:2)
这会改善事情吗?:
Function IsRowVisible(MyRange As Range) As Integer
Application.Volatile
If (MyRange.EntireRow.Hidden = False) Then
IsRowVisible = 1
Else
IsRowVisible = 0
End If
End Function
这可能是一个波动问题。只有当 A1 中的值发生变化时,您的功能才会重新计算。
您可能需要将您的函数与SUBTOTAL()
函数结合使用,因为SUBTOTAL()
会在隐藏/取消隐藏行时重新计算。