セルに配列をセットする場合、2次元配列を使います。
(1行のみなら1次元配列でもできます。)
いろいろ試しながらサンプルを作ってみました。
(配列の宣言の違いや、セルから値を持ってきた場合の
配列の作られ方などを見てください)
(文字列配列・数値配列だから、この方法というわけではありません)
test()を実行後、test2()を実行してみてください。
test3()は1次元配列でのテストです。
(列では、うまくセットできない事を確認してください)
Sub test()
Dim b(1 To 5, 1 To 3) As String
Dim c(4, 2) As Integer
'配列の値をセルにセット
b(1, 1) = "1": b(1, 2) = "2": b(1, 3) = "3"
b(2, 1) = "a2": b(2, 2) = "b2": b(2, 3) = "c2"
b(3, 1) = "a3": b(3, 2) = "b3": b(3, 3) = "c3"
b(4, 1) = "a4": b(4, 2) = "b4": b(4, 3) = "c4"
b(5, 1) = "a5": b(5, 2) = "b5": b(5, 3) = "c5"
Range("A1:C5") = b
'配列の値をセルにセット
c(0, 0) = 8: c(0, 1) = 7: c(0, 2) = 6
c(1, 0) = 1: c(1, 1) = 1: c(1, 2) = 1
c(2, 0) = 2: c(2, 1) = 2: c(2, 2) = 2
c(3, 0) = 3: c(3, 1) = 3: c(3, 2) = 3
c(4, 0) = 4: c(4, 1) = 4: c(4, 2) = 4
Range("B10:D14") = c
End Sub
Sub test2()
Dim a As Variant
'セルから値を取得
a = Range("B10:D14")
For x = LBound(a, 1) To UBound(a, 1)
For y = LBound(a, 2) To UBound(a, 2)
'イミディエイト ウィンドウに表示
Debug.Print "(" & x & "," & y & ")= " & a(x, y)
'配列編集
a(x, y) = a(x, y) + y
Next y
Next x
'セルに値を代入
Range("B10:D14") = a
End Sub
Sub test3()
Range("A21:A23") = Array(21, 22, 23)
Range("A24:C24") = Array("A24", "B24", "C24") 'できない
Dim b(2)
b(0) = 1: b(1) = 2: b(2) = 3
Range("A21:A23") = b
Range("A24:C24") = b 'できない
End Sub
私の場合は、
セルから取得した配列の最小番号が1から始まるので
Dim b(1 To 5, 1 To 3) As String
こちらの配列宣言で処理します。
1列分の1次元配列をセットする方法が出来るのか
わかりませんので、2次元配列を使用しています。
いろいろ試してみてください。
お礼
これで、セットすることが出来ました。 初めて、この「教えてgoo」に投稿しました。 ここまで、とても親切な方々がいることに感動しました。 心より感謝申し上げます。