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