「二次元配列 for文書き方」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
どの言語についての話なのかわかりませんけれど、2次元配列に対するfor文の書き方を探していた方による検索です。
VBA(Visual Basic for Applications)の2次元配列を、For~Nextループで処理する簡単なサンプルマクロをご紹介しておきます。
2次元配列をFor~Nextループで処理するサンプルマクロ
以下のマクロを実行すると、
い・ろ・は・松・竹・梅
の順に、メッセージボックスが表示されます。
Dim arr(1 To 2, 1 To 3) As String
Dim x As Long, y As Long
arr(1, 1) = "い"
arr(1, 2) = "ろ"
arr(1, 3) = "は"
arr(2, 1) = "松"
arr(2, 2) = "竹"
arr(2, 3) = "梅"
For x = LBound(arr, 1) To UBound(arr, 1)
For y = LBound(arr, 2) To UBound(arr, 2)
MsgBox arr(x, y)
Next y
Next x
サンプルマクロの解説
1次元配列をFor~Nextループで処理する場合は、
Dim arr(1 To 3) As String
Dim i As Long
arr(1) = "い"
arr(2) = "ろ"
arr(3) = "は"
For i = LBound(arr) To UBound(arr)
MsgBox arr(i)
Next i
といったコードにします。
今回は、2次元配列なので、
For x = LBound(arr, 1) To UBound(arr, 1)
For y = LBound(arr, 2) To UBound(arr, 2)
と、For~Nextループを2重にしています。
「LBound(arr, 1)」で配列・arrの第1次元の添字の最小値を取得して、
「UBound(arr, 1)」で配列・arrの第1次元の添字の最大値を取得して、
外側のFor~Nextループの初期値・最終値をそれぞれ指定しています。
For x = LBound(arr, 1) To UBound(arr, 1)
同じく、
「LBound(arr, 2)」で配列・arrの第2次元の添字の最小値を取得して、
「UBound(arr, 2)」で配列・arrの第2次元の添字の最大値を取得して、
内側のFor~Nextループの初期値・最終値をそれぞれ指定しています。
For y = LBound(arr, 2) To UBound(arr, 2)
Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 2次元配列をFor~Nextループで