Если условие связано с применением фильтра столбцов - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь использовать условие if для фильтров.Я хотел бы написать код, чтобы проверить, применяется ли определенный фильтр, а затем сделать что-то ... (конечно)

Моя первая попытка была:

If ActiveSheet.Range("$D$4:$Q$20").AutoFilter Field:=2 then
   Rows("22:22").Select
   Selection.EntireRow.Hidden = True
End If

В самой первойлиния, VBA не принимает записанное условие ...

Есть предположения?

tks

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Обратите внимание, что вам не нужно выбирать строку перед тем, как ее скрыть.

Sub HideWhenFiltered()
    With ActiveSheet
        If .AutoFilterMode Then
            If .AutoFilter.Filters(2).On Then
               .Rows(22).Hidden = True
            End If
        End If
    End With
End Sub
0 голосов
/ 18 мая 2018

Это скажет вам, если диапазон находится в фильтре, и фильтр активен:

Public Function IsFilterOn(rng As Range) As Boolean
    Dim ws As Worksheet
    Dim iFilterNum As Integer

    Set ws = rng.Parent

    If Not ws.AutoFilter Is Nothing Then
        If Not Application.Intersect(rng, ws.AutoFilter.Range) Is Nothing Then
            With ws.AutoFilter.Filters
                iFilterNum = rng.Column - .Item(1).Parent.Range.Column + 1

                If iFilterNum <= .Count Then
                    IsFilterOn = .Item(iFilterNum).On
                    Exit Function
                End If
            End With
        End If
    End If
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...