遍历特定工作表和 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
我尝试使用循环来清除某些工作表的内容,但无法清除单元格中的数据。
这是我开始使用的(有效的)静态代码:
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