Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 2次元配列をFor~Nextループで

2次元配列をFor~Nextループで

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「二次元配列 for文書き方」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

どの言語についての話なのかわかりませんけれど、2次元配列に対するfor文の書き方を探していた方による検索です。

VBA(Visual Basic for Applications)の2次元配列を、For~Nextループで処理する簡単なサンプルマクロをご紹介しておきます。

[スポンサードリンク]

2次元配列をFor~Nextループで処理するサンプルマクロ

以下のマクロを実行すると、
   い・ろ・は・松・竹・梅
の順に、メッセージボックスが表示されます。

Sub 二次元配列を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

End Sub

サンプルマクロの解説

1次元配列をFor~Nextループで処理する場合は、

Sub 一次元配列を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

End Sub

といったコードにします。

今回は、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ループで

「配列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.