VBA只select工作簿中的某些工作表,然后清除范围内的内容

我试图编写一些代码来select某些表(不是全部,而且表也不是全部相邻),清除每个单元格的相同范围,取消select它们,select另一组表单,清除相同的范围,等等。这是代码。

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 

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

 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?

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

如果你想清除其他范围的其他表,我build议你重复这个操作与其他值。

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

 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