如何将循环计数器值添加为数组名称后缀(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 iinstead 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 iI'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 iSince Array() returns a 0-based array you need to be careful with the indices.
更多推荐
发布评论