简体   繁体   English

Excel VBA数组范围的循环

[英]Excel VBA Array Ranges for a loop

I'm trying to get a loop function to refer to a range of cells, rather than typing in the worksheet names individually. 我试图获取一个循环函数来引用单元格区域,而不是单独输入工作表名称。

I've got this code that works: 我有这段代码可以工作:

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

But then this code doesn't when I try and get it to refer to a range instead: 但是,当我尝试使其引用一个范围时,此代码就没有了:

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

I'm getting "Subscript out of range" error when I try and use it, however the worksheets all exist (the range has the same names as the first code). 尝试使用它时,出现“下标超出范围”错误,但是所有工作表都存在(该范围与第一个代码具有相同的名称)。 Debug is highlighting the 调试突出显示了

WIth Worksheets(Arr(i)).Select

line. 线。 Any help would be greatly appreciated! 任何帮助将不胜感激!

-Cr1kk0 -Cr1kk0

You always get a 2 dimensional array when you assign a range to a variant so you need to specify both dimensions. 将范围分配给变量时,始终会得到一个二维数组,因此需要指定两个维度。 There's also no need to select anything here: 也无需在此处选择任何内容:

For i = LBound(Arr, 1) To UBound(Arr, 1)
    Worksheets(Arr(i, 1)).Range("A2:G60").ClearContents
Next i

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM