VBA只选择工作簿中的某些工作表,然后从一个范围中清除内容

时间:2017-10-13 10:41:36

标签: excel vba range

我试图编写一些代码来选择某些工作表(并非所有工作表,并且工作表也不是彼此相邻),从每个工作表中清除相同范围的单元格,取消选择它们,选择另一组工作表,清除每个工作表的相同范围等。这是代码。

ActiveWorkbook.Sheets(Array("J2a", "J7", "J10", "J11", "J13", "J17", "J18", "J19")).Select
    Range("C12:E14, C22:E24, C32:E34, C42:E44, C52:E54, C62:E64, C72:E74,C82:E84, C92:E94, C102:E104, C112:E114, C122:E124, C132:E134, C142:E144, C152:E154").ClearContents
        ThisWorkbook.Worksheets("Control").Activate

问题是它只清除活动工作表中的内容(这是选择列表中的第一个)。所以我将代码更改为以下内容,因为我认为必须有一种方法可以清除多张纸上的内容而不选择纸张:

ActiveWorkbook.Sheets(Array("J2a", "J2b", "J7", "J10", "J11", "J13 DM", "J13 DS", "J17", "J18", "J19")).Range("C12:E14, C22:E24, C32:E34, C42:E44, C52:E54, C62:E64, C72:E74, C82:E84, C92:E94, C102:E104, C112:E114, C122:E124, C132:E134, C142:E144, C152:E154").ClearContents

但是现在我收到一条错误,指出“对象”不支持此属性或方法。

我做错了什么?这两行看起来是独立工作的...也是为了我自己的理解,错误中的对象是什么? ActiveWorkbook?

1 个答案:

答案 0 :(得分:1)

您可以使用类似下面的代码。这将遍历数组sheetNamesArray中名称相同的所有工作表,并清除您在rangesArray中定义的每个范围。

如果要清除其他范围的其他工作表,我建议您使用其他值重复此操作。

注意:这假设您的所有工作表都在同一个工作簿中。

Dim sheetNamesArray
Dim rangesArray

'Array with the names of all of your sheets
sheetNamesArray = Array("Sheet1", "Sheet2", "Sheet3")
'Array with all of your ranges
rangesArray = Array("A2:B2", "A4:B4", "A6:B6")

'Go through each sheet in the array
For Each sheetName In sheetNamesArray
    'Go to each range in the sheet
    For Each rangeName In rangesArray
        'Clear the value
        ThisWorkbook.Sheets(sheetName).Range(rangeName).Clear
    Next rangeName
Next sheetName