在Excel VBA中连续调用两次(或更多)子例程时出现错误1004
我与这个错误斗争了大约一个半小时,一直没有找到答案。也许你能帮我一下 我有一个短的子节点,它在一张表中定位一个标记为“Filter”的列。它为该列启用自动过滤器并将其隐藏在Excel VBA中连续调用两次(或更多)子例程时出现错误1004,vba,excel,Vba,Excel,我与这个错误斗争了大约一个半小时,一直没有找到答案。也许你能帮我一下 我有一个短的子节点,它在一张表中定位一个标记为“Filter”的列。它为该列启用自动过滤器并将其隐藏 Sub Test1() Call FilterHide(Worksheets("Integration")) Call FilterHide(Worksheets("Integration Matrix")) End Sub Sub FilterHide(ByVal target As Worksheet
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()”只要我调用一次就可以正常工作。但是,当我尝试从另一个具有不同工作表的sub调用它两次时,它会中断(例如上面的“Test1()”)。我得到“运行时错误1004:object'\u Worsksheet'的方法'Range'失败”
target.Range(Columns(clm), Columns(clm)).AutoFilter Field:=1, Criteria1:="Show"
如果一次只运行一个,我可以为所有工作表成功运行FilterHide()
。只有当我多次调用它时,才会出现错误。我的最终目标是创建一个工作表\u Deactivate()
target.Range(Columns(clm), Columns(clm)).AutoFilter
此处,非限定的列(clm)
将引用活动表,而不是目标
你需要:
target.Range(target.Columns(clm), target.Columns(clm)).AutoFilter
但这只限于
target.Columns(clm).AutoFilter
这就解决了问题。谢谢你的快速回复,蒂姆。