Очистить определенный слайсер на активном рабочем листе - PullRequest
1 голос
/ 03 октября 2019

У меня есть два слайсера на рабочем листе. Один называется Регион, другой - Больница. Я пытаюсь создать две кнопки на странице. Тот, который очистит только слайсер больницы;другой, чтобы очистить ТОЛЬКО срез области только на активном листе. У меня есть кнопка, которая удаляет ВСЕ срезы на активном листе (код ниже), но я изо всех сил пытаюсь заставить его работать только с конкретным срезами.

Sub ClearSlicer()

'
'Clears Slicer on main dashboard page
'

Dim Slcr As SlicerCache
Dim slc As Slicer

Application.ScreenUpdating = False

For Each Slcr In ActiveWorkbook.SlicerCaches
    For Each slc In Slcr.Slicers
        If slc.Shape.Parent Is ActiveSheet Then
           Slcr.ClearManualFilter
           Exit For
        End If
    Next slc
Next Slcr

Application.ScreenUpdating = True

End Sub

Я попытался добавить ActiveWorkbook.SlicerCaches("Hospital") но это тоже не сработало. Это привело к ошибке отладки, которую я не смог исправить.

Я искал и еще не нашел ее здесь, поэтому я прошу прощения, если мне это не удалось. Любая помощь здесь будет полезна. Спасибо

1 Ответ

2 голосов
/ 03 октября 2019

Вы можете сослаться на Slicer по .Name:

Sub ClearSlicer()

'
'Clears Slicer on main dashboard page
'

Dim Slcr As SlicerCache
Dim slc As Slicer

Application.ScreenUpdating = False

For Each Slcr In ActiveWorkbook.SlicerCaches
    For Each slc In Slcr.Slicers
        If slc.Name = "Region" Or slc.Name = "Hospital" Then
            Slcr.ClearManualFilter
        End If
    Next slc
Next Slcr

Application.ScreenUpdating = True

End Sub

Если вы не совсем уверены в названии слайсера, возможно, используйте Like:

If slc.Name Like "*Region*" Or slc.Name Like "*Hospital*" Then

(хотя вам, возможно, потребуется проверить, находится ли слайсер на ActiveSheet, как вы делаете в настоящее время).

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