2017-01-22 2 views
0

Код ниже отлично работает на моем компьютере с Excel 2013 и двумя другими компьютерами с использованием Excel 2010 и 2016, но он дает недействительную процедуру в разделе Slicer (выделен жирным шрифтом) для один из пользователей.Неверный вызов процедуры или аргумент - Excel VBA Slicer Cache

Это первый раз, когда я вижу эту ошибку у другого пользователя и использовал это ранее в других отчетах. Я не знаю, что могло бы вызвать это, поскольку макрос отлично работает на других компьютерах и в моем.

Как исправить это?

Sheets("Scorecard").Select 
**ActiveWorkbook.SlicerCaches("Slicer_Country").ClearManualFilter** 
With ActiveWorkbook.SlicerCaches("Slicer_Resourcing_Team") 
    .SlicerItems("RT1").Selected = True 
    .SlicerItems("RT2").Selected = True 
    .SlicerItems("RT3").Selected = True 
    .SlicerItems("RT4").Selected = False 
End With 

ответ

0

ниже код будет работать с 2-ломтерезкой под названием «Страна» и «Resourcing_Team» (подтвердить в своей книге, что это имя из ломтерезки).

Рекомендация: старайтесь избегать использования ActiveWorkbook и вместо этого используйте полностью квалифицированные объекты. Я использую в этом коде «SO_1.xlsm», изменяю его на имя вашей книги).

Код:

Option Explicit 

Sub SlicersTst() 

Dim WB      As Workbook 
Dim CountrySlcrCache  As SlicerCache 
Dim ResourcingSlcrCache  As SlicerCache 

Set WB = Workbooks("SO_1.xlsm") 
Set CountrySlcrCache = WB.SlicerCaches("Slicer_Country") '<-- set Slicer Cache to "Slicer_Country"  
CountrySlcrCache.ClearManualFilter '<-- clear manual filters 

Set ResourcingSlcrCache = WB.SlicerCaches("Slicer_Resourcing_Team") '<-- set Slicer Cache to "Slicer_Resourcing_Team" 
With ResourcingSlcrCache 
    .SlicerItems("RT1").Selected = True 
    .SlicerItems("RT2").Selected = True 
    .SlicerItems("RT3").Selected = True 
    .SlicerItems("RT4").Selected = False 
End With 

End Sub 
Смежные вопросы