从工作簿中的每个工作表中删除已使用的范围

时间:2019-10-16 15:59:27

标签: excel vba

我有这个测试数据集:

dataset

我在多张纸上放置了它,但是它的范围始终不同-更多的列,更多的行等。在此“标题”之下始终是一些空白行。

我想遍历所有工作表,并使用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资料并试图进行更改,但是我总是会出错。

谢谢

1 个答案:

答案 0 :(得分:1)

此错误很常见。

您必须为Range(和Cells)的每个实例添加一个工作表引用,否则您的范围可能跨越两张工作表(指定的工作表和活动工作表,这在没有该工作表的情况下隐含)导致错误)。

Set rng = ws.Range("A1", ws.Range("A1").End(xlDown).End(xlToRight))

在这种情况下,您还可以考虑以下变化形式:

Set rng = ws.Range("A1").currentregion

CurrentRegion