我在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方法失败
我想用这个宏做什么?
我想隐藏所有行,其中第一列中的值为零。在条件范围内,我在相应列中有'<> 0 。
我也使用数据透视表 - 我有一行1次,另一次超过100次。这就是我使用另一张表来显示这些行的原因。在我的表中,我有100行全部公式,引用隐藏表中的100行。如果Hide_sheet中的某些行为空,则在MySheet中,appopriate行的值为零。所以我总是有100行值,只是这些值正在改变。
当我在数据透视表中更改过滤器时,宏启动:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call MySub
End Sub
我一直在互联网上搜索很多东西,但我还没有找到解决问题的方法。也许你会帮助我。
===
新信息:
有时候这个宏工作,有时候不行......当我收到这个错误并且点击调试宏,然后停止调试,更改数据透视表中的过滤器然后我可以运行宏而没有任何错误时,它可以工作。
答案 0 :(得分:1)
我也在寻找类似问题的解决方案,并发现如果运行在数据透视表区域内选择了活动单元格的代码,则高级过滤器代码不起作用。只需添加一行,然后在advancedFilter命令之前选择pivot之外的任何单元格,它应该可以正常工作