无效的过程调用或参数 - Excel VBA 切片器缓存
Invalid Procedure Call Or Argument - Excel VBA Slicer Cache
下面的代码在我使用 Excel 2013 的计算机和其他两台使用 Excel 2010 和 2016 的计算机上运行良好,但它在切片器部分(下面以粗体显示)给出了无效程序其中一位用户。
这是我第一次从其他用户那里看到这个错误,并且之前在其他报告中使用过这个错误。我不知道是什么原因造成的,因为宏在其他计算机和我的计算机上都可以正常工作。
我该如何解决这个问题?
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
下面的代码将使用名为 "Country" 和 "Resourcing_Team" 的 2 个切片器(在您的工作簿中确认这是切片器的名称)。
建议:尽量避免使用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
下面的代码在我使用 Excel 2013 的计算机和其他两台使用 Excel 2010 和 2016 的计算机上运行良好,但它在切片器部分(下面以粗体显示)给出了无效程序其中一位用户。
这是我第一次从其他用户那里看到这个错误,并且之前在其他报告中使用过这个错误。我不知道是什么原因造成的,因为宏在其他计算机和我的计算机上都可以正常工作。
我该如何解决这个问题?
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
下面的代码将使用名为 "Country" 和 "Resourcing_Team" 的 2 个切片器(在您的工作簿中确认这是切片器的名称)。
建议:尽量避免使用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