VBA只选择工作簿中的某些工作簿,然后清除范围内的内容
问题描述:
我试图编写一些选择某些工作表的代码(并非全部,并且工作表并非全部彼此相邻),清除来自每个单元格的相同范围的单元格取消选择它们,选择另一组单元格,从每个单元格中清除相同的范围等等。以下是代码。VBA只选择工作簿中的某些工作簿,然后清除范围内的内容
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?
答
您可以使用类似下面的代码。这将遍历所有在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
@RichPrag有用吗? – Teasel
是的!非常感谢,真正把我排除在外。 –
@RichPrag不客气!很高兴我帮了忙 – Teasel