【发布时间】:2020-02-13 11:25:33
【问题描述】:
我有这个测试数据集:
我在多张纸上都有它,但它总是不同的范围 - 更多的列,更多的行等。在这个“标题”下面总是有一些空白行。
我想遍历所有工作表并使用 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 材料并尝试进行更改,但我总是以错误告终。
谢谢
【问题讨论】:
-
Set rng = ws.Range("A1", ws.Range("A1").End(xlDown).End(xlToRight))或更简洁的是Set rng = ws.Range("A1").currentregion。 -
哦,哇,为什么解决方案总是那么简单:(我在第一个范围而不是第二个之前添加前缀。所以我总是需要将工作表引用放在语句中的每个范围前面。另一个记下了,谢谢:)
-
@Raymond_90 - 这是
With ws...End With块的一个很好的用例。 -
您这样做,不这样做是这里提出问题的常见原因,因此您处于领先地位。
-
@BigBen 谢谢你,我会调查的,SJR 再次谢谢你,我能以某种方式将你的评论标记为解决方案吗?