Условный автофильтр - PullRequest
0 голосов
/ 26 декабря 2018

Я использую этот макрос для повторного применения фильтра каждый раз, когда вносятся изменения в данные листа:

Private Sub Worksheet_Change(ByVal Target As Range)

   Sheets("SHIFTS").AutoFilter.ApplyFilter

End Sub

Мне нужно повторно применять фильтр только тогда, когда запись данных содержит определенный символ.

например, пользователь может вводить значения 1,2,3,1S, 2S, 3S

Мне нужно повторно применять фильтр только тогда, когда во введенном значении есть символ "S".

1 Ответ

0 голосов
/ 26 декабря 2018

Если ваши 1,2,3,1S, 2S, 3S находятся в столбце A, тогда следует повторно применить существующий автофильтр всякий раз, когда значение nS вводится или вставляется в столбец A.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("A:A"), UsedRange) Is Nothing Then
        On Error GoTo bye
        Application.EnableEvents = False
        Dim t As Range
        For Each t In Intersect(Target, Range("A:A"), UsedRange)
            If CBool(InStr(1, t.Value, "s", vbTextCompare)) Then
                If AutoFilterMode Then _
                    AutoFilter.ApplyFilter
                Exit For
            End If
        Next t
    End If

bye:
    Application.EnableEvents = True
End Sub

Если все операции выполняются на рабочем листе Worksheet_Change, ссылки на родительский рабочий лист автоматически неявно подразумеваются в листе частного кода рабочего листа.

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