Столкновение автофильтра VBA с функцией isVisible - PullRequest
0 голосов
/ 03 февраля 2011

У меня есть эта функция isVisible:

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 голосов
/ 04 февраля 2011

Кажется, что с Application.CalculateFull, теперь он работает.Однако, возможно, это не лучший способ сделать это, поэтому я оставлю вопрос открытым на тот случай, если кто-то знает лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...