VBA自动过滤器与isVisible函数冲突

时间:2011-02-03 16:46:05

标签: excel excel-2007

我有这个可见的功能:

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(无论是自动过滤,可见或不可见的单元格)都会引发错误。 需要明确的是,如果我手动应用自动过滤器,则不会发生这种情况。

我一直在寻找一段时间,但我无法修复它。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

似乎使用Application.CalculateFull,现在它可以正常工作。然而,也许这不是最好的方法,所以我会留下问题,万一有人知道更好。