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