我有这样的代码在VBA Excel中:VBA宏 - Range类的AdvancedFilter方法失败
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':
AdvancedFilter Range类失败的方法
我想用这个宏做什么?
我想隐藏所有行,其中第一列的值为零。在标准范围内,我有'<> 0在适当的列。
我也使用数据透视表 - 我有一次1行,另一次超过100.所以这就是为什么我使用另一个表来显示这些行。在我的表格中,所有100行都含有表示隐藏工作表中100行的公式。如果Hide_sheet中的某行为空,则MySheet appopriate行中的值为零。所以我总是有100行的值,只是这些值正在改变。
宏开始时,我改变透视表滤波器:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call MySub
End Sub
我已经seraching在网上有很多,但我还没有找到我的问题的解决方案呢。也许你会帮助我。
===
新信息:
有时候这个宏的作品,有时不...它的工作原理,当我得到这个错误,我点击调试宏,然后在数据透视表停止调试,更换过滤器,然后我可以运行宏没有任何错误。
奇怪......它适用于我。我认为我们将需要更多的细节,如标题等。你确定你至少有2行MySheet范围A44:A55? – 2014-08-29 09:08:06
正常情况下,如果尝试添加过滤器(超出范围),则会出现此类错误,如果您没有范围A44:A144内的数据,则实际上会出现此类错误。检查... – user3514930 2014-08-29 09:21:31
是的,我有表头和一些行或行。查看我的问题更新。 – Monic 2014-08-29 09:48:34