我正在尝试制作一个UDF,以验证用户定义的样式选项,特别是在这种情况下,ListObjects
,但我希望得到一个普遍的答案。
举一个示例表:Table1
我的UDF如下,出于演示目的,我们在单元格A2中:
=TableHeaderExists("Table1")
该函数返回一个结果:
Public Function TableHeaderExists(table_name As String) As Boolean
TableHeaderExists = ThisWorkbook.ActiveSheet.ListObjects(table_name).ShowHeaders
End Function
A2现在返回一个结果。但是当用户取消选中“设计选项卡”中的复选框,条件发生变化时,它不会重新计算。
所以我在函数中添加了Application.Volatile
。
A2仍然不会重新计算。我删除了Application.Volatile
并添加了ActiveSheet.Calculate
在这种情况下,它适用于一次更改,仅适用于一次更改。
我注意到的是,如果我编辑表格中的任何数据,任何数据,那么具有验证功能的那些单元格将被重新计算,但不会在样式选项被更改时重新计算。
因此,我尝试通过验证标题的范围来获得结果,这也就像验证“ShowHeaders”一样,只是在身体数据以某种方式改变后更新,而不是外观:
Public Function TableHeaderExists(table_name As String) As Boolean
Dim tbl As ListObject
Dim hdrRng As Range
Application.Volatile
Set tbl = ActiveSheet.ListObjects(table_name)
Set hdrRng = tbl.HeaderRowRange
If Not hdrRng Is Nothing Then
TableHeaderExists = True
Else
TableHeaderExists = False
End If
答案 0 :(得分:0)
我担心这不起作用:
UDF仅在以下情况下计算:
更改设计选项卡中的复选框不会触发计算,因此无法计算UDF。