Excel VBA中的对象定义错误-代码随后继续运行

Excel VBA中的对象定义错误-代码随后继续运行,excel,vba,Excel,Vba,我正在Excel中使用转录到数据透视表的OLAP数据开发一个报表生成工具。由于过去使用切片器会对文件的性能产生非常负面的影响,我现在尝试使用宏设置过滤器值来实现它。下面的代码使用年份(FilterYear)、月份(FilterMonth)、数据透视表名称(数据透视表)和包含该表的工作表(SheetCase)在月份级别设置筛选器 我遇到的问题是,在遍历表时,在第一个.VisibleItemsList语句中会出现随机的“对象或应用程序定义的错误”。这些错误并不总是出现在同一次迭代中,而且,当我点击“

我正在Excel中使用转录到数据透视表的OLAP数据开发一个报表生成工具。由于过去使用切片器会对文件的性能产生非常负面的影响,我现在尝试使用宏设置过滤器值来实现它。下面的代码使用年份(FilterYear)、月份(FilterMonth)、数据透视表名称(数据透视表)和包含该表的工作表(SheetCase)在月份级别设置筛选器

我遇到的问题是,在遍历表时,在第一个.VisibleItemsList语句中会出现随机的“对象或应用程序定义的错误”。这些错误并不总是出现在同一次迭代中,而且,当我点击“继续”时,宏将继续运行,直到下一次出现此错误(也是随机的)。这样继续下去,代码就完成了,它已经完成了它应该做的一切,但是错误消息真的很重要

我发现使用“with”语句有助于解决这个问题(),这就是为什么我在sub中添加了工作表参数(在我刚刚使用ActiveSheet之前),但这并不能解决这个问题。以前有人遇到过这样的问题吗?如果需要,我很乐意提供更多信息。非常感谢您可能提供的任何帮助

Sub FilterPivotFieldMonth(FilterYear As Integer, FilterMonth As Integer, PivotTable As String, SheetCase As Worksheet)

' Macro to filter PivotTable according to FilterYear and FilterMonth
 With SheetCase
    .PivotTables(PivotTable).PivotFields( _
    "[Date and Time].[By Year].[Year]").VisibleItemsList = Array("")
    .PivotTables(PivotTable).PivotFields( _ 
    "[Date and Time].[By Year].[Month]").VisibleItemsList = Array( _
    "[Date and Time].[By Year].[Month].&[" & FilterMonth & " / " & FilterYear & "]")
    .PivotTables(PivotTable).PivotFields( _
    "[Date and Time].[By Year].[Date]").VisibleItemsList = Array("")
    .PivotTables(PivotTable).PivotFields( _
    "[Date and Time].[By Year].[Hour]").VisibleItemsList = Array("")
    .PivotTables(PivotTable).PivotFields( _
    "[Date and Time].[By Year].[Quarter Hour]").VisibleItemsList = Array("")
End With

End Sub

如果有人想寻找解决方案:我没有将工作表作为输入参数,而是使用了工作表编号(整数)。这似乎已经消除了所有的错误。现在的行是:

With Sheets(SheetCase)
我仍然不知道为什么Excel在那里给我带来了困难,但至少现在它起作用了