我有这个可见的功能:
Public Function IsVisible(InRange As Range) As Boolean()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' IsVisible
' This function returns an array of Boolean values indicating whether the
' corresponding cell in InRange is visible.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim R As Range
Dim Arr() As Boolean
Dim RNdx As Integer
Dim CNdx As Integer
ReDim Arr(1 To InRange.Rows.Count, 1 To InRange.Columns.Count)
For RNdx = 1 To InRange.Rows.Count
For CNdx = 1 To InRange.Columns.Count
Set R = InRange(RNdx, CNdx)
If R.EntireRow.Hidden = True Or R.EntireColumn.Hidden = True Then
Arr(RNdx, CNdx) = False
Else
Arr(RNdx, CNdx) = True
End If
Next CNdx
Next RNdx
IsVisible = Arr
End Function
直到你用vba应用自动过滤器才能正常工作:
Worksheets("Datos").Range("datos").AutoFilter Field:=pFindColPos(tag), Criteria1:="1"
当我执行此操作时,isVisible(无论是自动过滤,可见或不可见的单元格)都会引发错误。 需要明确的是,如果我手动应用自动过滤器,则不会发生这种情况。
我一直在寻找一段时间,但我无法修复它。有什么想法吗?
谢谢!
答案 0 :(得分:0)
似乎使用Application.CalculateFull,现在它可以正常工作。然而,也许这不是最好的方法,所以我会留下问题,万一有人知道更好。