如何将循环计数器值添加为数组名称后缀(How to add loop counter value as array name suffix)

我有3个变体数组:Array1 Array2 Array3

我想将我的for循环的计数器值添加到数组名称的末尾,以保存重复相同的代码行,例如:

For i = 1 To oXlWkBk.Sheets.Count FillArray ArraySource & i, "B1:" & oCurrentWs.Cells(lNumRows, lNumCols).Address(RowAbsolute:=False, ColumnAbsolute:=False) Next i

代替:

For i = 1 To oXlWkBk.Sheets.Count FillArray ArraySource1, "B1:" & oCurrentWs.Cells(lNumRows, lNumCols).Address(RowAbsolute:=False, ColumnAbsolute:=False) FillArray ArraySource2, "B1:" & oCurrentWs.Cells(lNumRows, lNumCols).Address(RowAbsolute:=False, ColumnAbsolute:=False) FillArray ArraySource3, "B1:" & oCurrentWs.Cells(lNumRows, lNumCols).Address(RowAbsolute:=False, ColumnAbsolute:=False) Next i

我尝试过使用:

数组&i Array&Cstr(i) 阵列(ⅰ)

是否可以将计数器值附加为后缀以完成数组名称?

I have 3 variant arrays: Array1 Array2 Array3

I am wanting to add the counter value of my for loop to the end of the array name to save repeating the same code line over e.g. :

For i = 1 To oXlWkBk.Sheets.Count FillArray ArraySource & i, "B1:" & oCurrentWs.Cells(lNumRows, lNumCols).Address(RowAbsolute:=False, ColumnAbsolute:=False) Next i

instead of:

For i = 1 To oXlWkBk.Sheets.Count FillArray ArraySource1, "B1:" & oCurrentWs.Cells(lNumRows, lNumCols).Address(RowAbsolute:=False, ColumnAbsolute:=False) FillArray ArraySource2, "B1:" & oCurrentWs.Cells(lNumRows, lNumCols).Address(RowAbsolute:=False, ColumnAbsolute:=False) FillArray ArraySource3, "B1:" & oCurrentWs.Cells(lNumRows, lNumCols).Address(RowAbsolute:=False, ColumnAbsolute:=False) Next i

I've tried using:

Array & i Array & Cstr(i) Array(i)

Is it possible to append the counter value as a suffix to complete the array name?

最满意答案

这应该工作:

Dim Arrays As Variant Arrays = Array(Array1, Array2, Array3) For i = 1 To oXlWkBk.Sheets.Count FillArray Arrays(i-1), "B1:" & oCurrentWs.Cells(lNumRows, lNumCols).Address(RowAbsolute:=False, ColumnAbsolute:=False) Next i

由于Array()返回一个从0开始的数组,因此需要注意索引。

This should work:

Dim Arrays As Variant Arrays = Array(Array1, Array2, Array3) For i = 1 To oXlWkBk.Sheets.Count FillArray Arrays(i-1), "B1:" & oCurrentWs.Cells(lNumRows, lNumCols).Address(RowAbsolute:=False, ColumnAbsolute:=False) Next i

Since Array() returns a 0-based array you need to be careful with the indices.

更多推荐