Excel VBA数组范围循环
我试图让一个循环函数引用一个单元格范围,而不是单独input工作表名称。
我有这个代码可以工作:
Sub LoopTest() ' ' Macro4 Macro ' ' ' Loop Test Dim SheetsArray As Variant Dim i As Integer SheetsArray = Array("Bun1", "Bun2") For i = LBound(SheetsArray) To UBound(SheetsArray) With Worksheets(SheetsArray(i)).Select Range("A2:G60").Select Selection.ClearContents End With Next i End Sub
但是,当我试着让它引用一个范围,而不是这个代码:
Sub LoopTest() ' ' ' Loop Test Dim Arr As Variant Dim i As Integer Dim rng As Range Set rng = Worksheets("Names").Range("A2:A3") Arr = rng For i = LBound(Arr) To UBound(Arr) With Worksheets(Arr(i)).Select Range("A2:G60").Select Selection.ClearContents End With Next i End Sub
当我尝试使用它时,出现“下标超出范围”错误,但是工作表都存在(范围与第一个代码具有相同的名称)。 debugging是突出的
WIth Worksheets(Arr(i)).Select
线。 任何帮助将不胜感激!
-Cr1kk0
当您将范围分配给变体时,您总是会得到一个二维数组,因此您需要指定两个维度。 这里也不需要select任何东西:
For i = LBound(Arr, 1) To UBound(Arr, 1) Worksheets(Arr(i, 1)).Range("A2:G60").ClearContents Next i