一旦配列として格納していた値の一部を配列として利用したい場合の方法です。
参考:値の一括代入と高速処理
目次
配列の例
シート「一覧」のデータを配列に格納します。
格納された配列のうち、項目名の1行目のみ別の配列へ格納し、格納された値を別シートへ書き出したい。
サンプルコード
Sub sample1() Dim item() As String Dim i As Long, j As Long, k As Long Dim rng() As Variant: rng = Range("A1").CurrentRegion ReDim item(UBound(rng, 2)) As String For i = 1 To UBound(item) item(i) = rng(1, i) Next i k = 1 For j = 1 To UBound(item) Sheets("出力").Cells(1, j) = item(k) k = k + 1 Next j End Sub
シート「一覧」の表を配列に格納
5行目の処理です。
Dim rng() As Variant: rng = Range("A1").CurrentRegion
ローカルウィンドウで確認
別配列に格納する処理
2行目:変数宣言のときに配列の大きさがわからないため、インディックスを指定しません。
6行目:シート「一覧」のデータを配列「rng」に格納した後に「ReDim」でインディックスを指定します。インディックスは「UBound(rng, 2)」で指定できます。
Dim item() As String ReDim item(UBound(rng, 2)) As String
8~10行目:別配列「item」に値を格納します。
For i = 1 To UBound(item) item(i) = rng(1, i) Next i
12~16行目:配列「item」の値をシート「出力」の1行目に書き出します。
k = 1 For j = 1 To UBound(item) Sheets("出力").Cells(1, j) = item(k) k = k + 1 Next j