遍历特定工作表和 Clearcontents 不起作用

Loop through specific worksheets and Clearcontents not working

我尝试使用循环来清除某些工作表的内容,但无法清除单元格中的数据。

这是我开始使用的(有效的)静态代码:

Set oWS2 = Sheets("WEBSHOP-NL")
Set oWS3 = Sheets("WEBSHOP-FR")
Set oWS4 = Sheets("WEBSHOP-EN")

~~>

  oWS2.UsedRange.Offset(1).SpecialCells(xlCellTypeConstants).ClearContents
  oWS3.UsedRange.Offset(1).SpecialCells(xlCellTypeConstants).ClearContents
  oWS4.UsedRange.Offset(1).SpecialCells(xlCellTypeConstants).ClearContents

这是我已经得到的:消息框输出 oWS2 ~> oWS3 ~> oWS4 但是...它并没有清除内容。

'LoopThroughSheets

Dim Shts As Variant
Dim Sht As Variant

Shts = Array("oWS2", "oWS3", "oWS4")

For Each Sht In Shts    'Loop Sheets Code goes here:
    Sht.UsedRange.Offset(1).SpecialCells(xlCellTypeConstants).ClearContents
    MsgBox "Sht = " & Sht, vbInformation
Next Sht

我在这里忽略了什么?谢谢回复。

您的数组是字符串数组,而不是工作表对象。因此,您必须根据其名称指定您感兴趣的工作表。就像您在原始代码 Set oWS2 = Sheets("WEBSHOP-NL") 中使用 Sheets 对象所做的一样。

Dim Shts As Variant
Dim Sht As Variant

Shts = Array("WEBSHOP-NL", "WEBSHOP-FR", "WEBSHOP-EN")

For Each Sht In Shts    'Loop Sheets Code goes here:
    Sheets(Sht).UsedRange.Offset(1).SpecialCells(xlCellTypeConstants).ClearContents
    MsgBox "Sht = " & Sht, vbInformation
Next Sht

或者,您可以坚持使用现有代码,但删除数组中变量周围的引号,但这似乎很麻烦设置所有这些变量,将它们粘贴到数组中,然后迭代数组:

Set oWS2 = Sheets("WEBSHOP-NL")
Set oWS3 = Sheets("WEBSHOP-FR")
Set oWS4 = Sheets("WEBSHOP-EN")

'LoopThroughSheets

Dim Shts As Variant
Dim Sht As Variant

Shts = Array(oWS2, oWS3, oWS4)

For Each Sht In Shts    'Loop Sheets Code goes here:
    Sht.UsedRange.Offset(1).SpecialCells(xlCellTypeConstants).ClearContents
    MsgBox "Sht = " & Sht, vbInformation
Next Sht