Как очистить весь слайсер только на одном листе? - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь очистить все слайсеры на определенном листе, но получаю следующую ошибку: «переменная объекта или переменная блока не установлена» в этой строке: cache.ClearManualFilter.

Мой код:

Sub Clear_all_filters()

Dim cache As SlicerCache

Set mWS = Sheets("Specific_Sheet")

For Each cache In mWS.SlicerCaches
cache.ClearManualFilter
Next cache

End Sub

Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

На тот случай, если кто-то все еще ищет решение этого вопроса, вот код, который я сейчас использую:

Sub OnePageSlicersReset()

 Dim slcrC As SlicerCache
 Dim slcr As Slicer

 Application.ScreenUpdating = False

 For Each slcrC In ActiveWorkbook.SlicerCaches
   For Each slcr In slcrC.Slicers
      If slcr.Shape.Parent Is ActiveSheet Then
         If slcrC.FilterCleared = False Then
            slcrC.ClearManualFilter
            Exit For
         End If
      End If
   Next slcr
 Next slcrC

 Application.ScreenUpdating = True

 End Sub
0 голосов
/ 21 декабря 2018

Во-первых, вам нужно перейти в Инструменты> Параметры и включить Требуется объявление переменных.Это добавит Option Explicit в начало любого нового модуля (вам нужно будет добавить его самостоятельно в любой ранее существующий модуль).

Это заставит вас объявить mWS, который должен быть рабочим листом.Класс по команде Set.Это вызовет ошибку «Метод или элемент данных не найден» при попытке запустить код.

Это потому, что SlicerCaches - это свойство класса Workbook, а не Worksheet (как описано здесь: https://docs.microsoft.com/en-us/office/vba/api/excel.slicercache)

. В этом случае мы можем удалить все ссылки на mWS и просто использовать ThisWorkbook.это говорит о том, что он будет проходить по всем слайсерам в текущей рабочей книге, поэтому вам может потребоваться дополнительная копка, если вы хотите ограничить их только одним листом.

Option Explicit

Sub Clear_all_filters()

Dim cache As SlicerCache

For Each cache In ThisWorkbook.SlicerCaches
    cache.ClearManualFilter
Next cache

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