回答:
ちょうどこれにつまずいて、私が私の解決策を提案すると思いました。私は通常、範囲を多次元配列に割り当てる組み込みの機能を使用するのが好きです(私はJS Programmerでもあると思います)。
私は頻繁にこのようなコードを書きます:
Sub arrayBuilder()
myarray = Range("A1:D4")
'unlike most VBA Arrays, this array doesn't need to be declared and will be automatically dimensioned
For i = 1 To UBound(myarray)
For j = 1 To UBound(myarray, 2)
Debug.Print (myarray(i, j))
Next j
Next i
End Sub
変数に範囲を割り当てることは、VBAでデータを操作するための非常に強力な方法です。
Range("A1:D4") = myarray
。注: Dim myarray
バリアントとして; デフォルトでは1 ベースの2次元配列であることに注意してください
ループではCells
、次のように、R1C1参照メソッドを使用して、常にクラスを使用することを好みます。
Cells(rr, col).Formula = ...
これは、迅速かつ容易に私を可能にするループを超える範囲に容易細胞の:
Dim r As Long
Dim c As Long
c = GetTargetColumn() ' Or you could just set this manually, like: c = 1
With Sheet1 ' <-- You should always qualify a range with a sheet!
For r = 1 To 10 ' Or 1 To (Ubound(MyListOfStuff) + 1)
' Here we're looping over all the cells in rows 1 to 10, in Column "c"
.Cells(r, c).Value = MyListOfStuff(r)
'---- or ----
'...to easily copy from one place to another (even with an offset of rows and columns)
.Cells(r, c).Value = Sheet2.Cells(r + 3, 17).Value
Next r
End With