我已经为这个错误苦苦挣扎了大约一个半小时,但一直找不到答案。也许你能帮帮我。
我有一个简短的子程序,可以在工作表中找到标有“过滤器”的列。它打开该列的自动过滤器并将其隐藏。
Sub Test1()
Call FilterHide(Worksheets("Integration"))
Call FilterHide(Worksheets("Integration Matrix"))
End Sub
Sub FilterHide(ByVal target As Worksheet)
'
'Searches for filter column, then autofilters selection to show only "Show"
Dim clm As Integer
If IsError(Application.Match("Filter", target.Range("1:1"), 0)) Then
Exit Sub
End If
clm = Application.Match("Filter", target.Range("1:1"), 0)
target.Range(Columns(clm), Columns(clm)).AutoFilter Field:=1, Criteria1:="Show"
target.Range(Columns(clm), Columns(clm)).EntireColumn.Hidden = True
End Sub
当我调用一次时,'FilterHide()' 工作正常。但是,当我尝试从另一个具有不同工作表的子系统调用它两次时,它会中断(例如上面的'Test1()')。我收到“运行时错误 1004:对象 '_Worsksheet' 的方法 'Range' 失败。” 然后调试器将我指向以下行
target.Range(Columns(clm), Columns(clm)).AutoFilter Field:=1, Criteria1:="Show"
FilterHide()
如果我一次做一张,我可以成功地运行所有工作表。只有当我多次调用它时才会出错。我的最终目标是创建一个Worksheet_Deactivate()
运行FilterHide()
大约 7 个不同工作表的事件。