在我的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
因此,在我可以对其进行任何操作之前,表格是否需要激活?
答案 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帖子和其他内容中讨论的原因。