运行时错误' 1004'在隐藏工作表上应用自动筛选时

时间:2014-04-04 02:44:18

标签: excel vba

在我的UserForm上,有一个带有此Click事件的按钮:

Private Sub CommandButton1_Click()
    Dim rng As Range

    With ThisWorkbook.Sheets("Data")
        .AutoFilterMode = False
        Set rng = Range("A1:B100")
    End With

    With rng
        .AutoFilter
        .AutoFilter Field:=1, Criteria1:="=1*"
    End With
End Sub

我希望它选择范围 A1:B100 并对字段1的此范围应用自动过滤器,以选择数字 1 的行开头。

如果可以看到工作表数据,则脚本可以正常工作。但是,如果我选择隐藏工作表,那么我得到此运行时错误1004:

  

使用指定的范围无法完成命令。   选择范围内的单个单元格并再次尝试该命令。

有人可以帮帮我吗?


编辑#1 :我试过这个并且脚本有效:

With ThisWorkbook.Sheets("Data")
    .Activate
    .AutoFilterMode = False
    Set rng = Range("A1:B100")
End With

因此,在我可以对其进行任何操作之前,表格是否需要激活

1 个答案:

答案 0 :(得分:1)

改变这个:

Set rng = Range("A1:B100") 

为:

Set rng = .Range("A1:B100") 

第一种方法是在ActiveSheet中将rng设置为Range("A1:B100"),这通常不是隐藏的工作表。我认为你的激活隐藏表的技巧是出于相反的原因。实际上,我从未试图激活隐藏的表格。

我的建议方式是指出rng在"数据中。"它使用范围限定,就像使用AutofilterMode and the other properties inside your With`语句一样。

无论如何,您通常希望在代码中避免使用Activates,原因可能是其他一些SO帖子和其他内容中讨论的原因。