VBAmacros – Range类的AdvancedFilter方法失败

我在VBA Excel中有这样的代码:

Sub MySub() Dim sheet Application.EnableEvents = False Application.ScreenUpdating = False 'get current sheet name sheet = ActiveSheet.Name 'I have criteria range in hidden sheet Set cRng = Sheets("Hide_sheet.").Range("A14:O15") With Sheets("MySheet").Range("A44:O144") .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= cRng, _ Unique:=False 'in these 2 lines is this error End With Application.EnableEvents = True Application.ScreenUpdating = True Sheets(sheet).Select 'return to the sheet where I was End Sub 

我得到这样的错误:
运行时错误“1004”:
Range类的AdvancedFilter方法失败

我想用这个macros做什么?
我想隐藏所有的行,第一列中的零值。 在标准范围内,我在适当的列中有<<> 0

我也使用数据透视表 – 我有1行,另一次超过100.所以这就是为什么我使用另一个表来显示这些行。 在我的表中,我有100行充满了公式,指在隐藏表100行。 如果Hide_sheet中的某行为空,则MySheet的适当行中的值为零。 所以我总是有100行的值,只有这些值正在改变。

当我更改数据透视表中的filter时,macros开始:

 Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Call MySub End Sub 

我一直在互联网上搜寻很多,但我还没有find我的问题的解决scheme呢。 也许你会帮助我。

===
新信息:
有时候这个macros有效,有时候不行…当我得到这个错误时,它工作,我点击debuggingmacros,然后停止debugging,在透视表中更改filter,然后我可以运行macros没有任何错误。

我也在寻找类似的问题的解决scheme,发现先进的filter代码不工作,如果您运行代码与数据透视表区域内选定的活动单元格。 只需添加一些行,在advancedFilter命令之前select任何单元之外的单元格,它应该可以工作