我有这个测试数据集:
我在多张纸上放置了它,但是它的范围始终不同-更多的列,更多的行等。在此“标题”之下始终是一些空白行。
我想遍历所有工作表,并使用End(xlDown)和End(xlToRight)选择此标头。
我正在尝试使用以下代码进行操作:
Sub WorksheetLoop()
Dim ws As Worksheet
Dim rng As Range
For Each ws In ActiveWorkbook.Worksheets
Set rng = Range("A1", Range("A1").End(xlDown).End(xlToRight))
rng.Delete
Next ws
End Sub
此宏将删除第一个工作表上的所有内容,而在其他任何工作表上均无反应。
我尝试使用ws.rng,但随后出现对象错误。
你能告诉我我在做什么错吗?
我正在研究一些VBA资料并试图进行更改,但是我总是会出错。
谢谢
答案 0 :(得分:1)
此错误很常见。
您必须为Range
(和Cells
)的每个实例添加一个工作表引用,否则您的范围可能跨越两张工作表(指定的工作表和活动工作表,这在没有该工作表的情况下隐含)导致错误)。
Set rng = ws.Range("A1", ws.Range("A1").End(xlDown).End(xlToRight))
在这种情况下,您还可以考虑以下变化形式:
Set rng = ws.Range("A1").currentregion