二重ループ

ごめんなさい、今日もコンピュータ講座です(笑)
個人的なメモとしても、ブログに書いておきます。


構文中、For〜Nextなど使ってある範囲を繰り返し処理をしますが、
繰り返し文が二重になった時の概念が思ったより簡単だったので、
説明します。言語はVBです。


普通の繰り返し文

                                                                                                                                                  • -

Sub 配列変数とループ()


Dim A(0 To 2) As String
Dim i As Integer


A(0) = "近藤"
A(1) = "浅田"
A(2) = "竹内"


For i = 0 To 2


MsgBox (A(i) & "さんは出掛けました。")


Next


End Sub

                                                                                                                                                  • -


For〜Nextで変数「A()」の要素を繰り返し毎に変えていきます。
よって、メッセージボックスには下記の3種類の文字列が表示されます。


1回目「近藤さんは出掛けました。」
2回目「浅田さんは出掛けました。」
3回目「竹内さんは出掛けました。」
※構文中は0から数えてます。


では二重ループです。

                                                                                                                                                  • -

Sub 配列変数と二重ループ()


Dim A(0 To 1) As String, B(0 To 1) As String
Dim i As Integer, j As Integer


A(0) = "近藤"
A(1) = "浅田"
B(0) = "竹内"
B(1) = "関"


For i = 0 To 1


For j = 0 To 1


MsgBox (A(i) & "さんは" & B(j) & "さんに会いました。")


Next j


Next i


End Sub

                                                                                                                                                  • -


これはまずiに0が入った時、jにも0が入ります。
jが0回目の処理を終えた時、繰り返し処理をするため「For j」に戻ります。
jに1が入り、1回目の処理をします。終えたら、「For j」の繰り返しは終わりますので、
「Next i」に進み「For i」へ進みます。それでiに1が入り、jに0が入ります
。で、jが0回目の処理を終えたら「For j」に戻り、jに1が入り、
1の処理が終わったら、2回目の処理はないのでそのままEnd Subで終了です。


上記の説明はややこしいけど、
簡単に言うと、「i=0」というの処理の中で「j=0」を処理して「j=1」という処理をしてから、
「i=1」という処理に進み、「j=0」を処理して「j=1」と言う処理をする、そんな感じです。


人で例えると、
近藤さん(i=0)が竹内さん(j=0)に会って、関さん(j=1)と会ってから、
浅田さん(i=1)は竹内さん(j=0)に会って、関さん(j=1)に会う、、、
イメージはそんな感じです(笑)


結果、


1回目「近藤さんは竹内さんに会いました。」
2回目「近藤さんは関さんに会いました。」
3回目「浅田さんは竹内さんに会いました。」
4回目「浅田さんは関さんに会いました。」
※構文中は0から数えてます。


と表示されます。


また、これらを応用すると、
下記のような多次元配列を使った二重ループを書く事が出来ます。

                                                                                                                                                  • -

Sub 多次元配列と二重ループ()


Dim A(0 To 1, 0 To 1) As String
Dim i As Integer, j As Integer


A(0, 0) = "近藤"
A(0, 1) = "浅田"
A(1, 0) = "竹内"
A(1, 1) = "関"


For i = 0 To 1


For j = 0 To 1


MsgBox (A(i, j) & "さんは出掛けました。")


Next j


Next i


End Sub

                                                                                                                                                  • -


結果は、


1回目「近藤さんは出掛けました。」
2回目「浅田さんは出掛けました。」
3回目「竹内さんは出掛けました。」
4回目「関さんは出掛けました。」
※構文中は0から数えてます。


のように表示されます。


またいつかブログ講座するかもしれません(笑)
もし興味あれば試してみて下さい。エクセルで出来ます。



Excel VBA 逆引き辞典パーフェクト 2010/2007/2003対応

Excel VBA 逆引き辞典パーフェクト 2010/2007/2003対応