Исключение нескольких слайсеров при очистке всех слайсеров с помощью VBA

У меня есть набор слайсеров, которые мне нужно очистить, исключая 2 слайсера, которые должны оставаться выбранными. Код, который я сейчас использую, позволяет мне исключить 1 из слайсеров из очистки, но я не могу найти правильный способ исключить 2-й слайсер. Код ниже - это то, что я использую:

Sub Clearslcr()
    Dim Slcr As SlicerCache
    Dim SL As Slicer
    For Each Slcr In ActiveWorkbook.SlicerCaches
        For Each SL In Slcr.Slicers
            If SL.Parent.Name = ActiveSheet.Name Then
                If InStr(SL.Name, "Measure") = False Then
                    Slcr.ClearManualFilter
                End If
            End If
        Next SL
    Next Slcr
End Sub

Может ли кто-нибудь посоветовать, как исключить оба? Я пытаюсь исключить «Измерение» и «Текущий против сравнения», похоже, я могу сделать одно или другое! (Новое для использования VBA, так что учусь на ходу!)


person M Bennett    schedule 04.05.2018    source источник
comment
Привет, оцените вышеизложенное, теперь это удаляет все слайсеры на листе, я проверил, и код соответствует имени слайсера, но, похоже, удаляет все это.   -  person M Bennett    schedule 04.05.2018
comment
Поиграй немного, может быть тебе нужно Or вместо And :) Not тоже убери - только догадываюсь - If InStr(SL.Name, "Measure") or InStr(SL.Name, "Current vs Comparison")   -  person Vityata    schedule 04.05.2018
comment
Или теперь только очищает слайсер для Current vs Comparison. И, кажется, очищает все слайсеры :( Продолжаю играть с комбинацией   -  person M Bennett    schedule 04.05.2018
comment
Можно ли сделать это вручную и record a macro? Наверное, расчистку надо делать сразу, идк...   -  person Vityata    schedule 04.05.2018
comment
Оно работает! Необходимо добавить еще один [End If], если после добавления дополнительной команды, чтобы она работала! Спасибо за вашу помощь :)   -  person M Bennett    schedule 04.05.2018
comment
@MBennett Если возможно, рассмотрите возможность добавления своего решения в качестве ответа ниже, а затем щелкните галочку рядом с ним, чтобы будущие читатели знали, что решило вашу проблему!   -  person TylerH    schedule 04.05.2018


Ответы (1)


Если вы хотите исключить 2 переменные из for-loop, может пригодиться такой пример:

Sub TestMe()

    Dim bar, foo
    bar = Array(1, 2, 3, 4, 5)

    For Each foo In bar
        If Not (foo = 1) And Not (foo = 2) Then
            Debug.Print foo
        End If
    Next foo

End Sub

Он печатает 3,4,5, поскольку 1 и 2 игнорируются.

person Vityata    schedule 04.05.2018