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 
+0

@RichPrag有用吗? – Teasel

+0

是的!非常感谢,真正把我排除在外。 –

+0

@RichPrag不客气!很高兴我帮了忙 – Teasel