EXCEL VBA 繰り返し処理の使い分け(For Next・Do While Loop・Do Until Loop・Do Loop While)

EXCEL VBA 繰り返し処理の使い分け(For Next・Do While Loop・Do Until Loop・Do Loop While)

 

 ●はじめに
EXCEL VBAでは、同じ処理を繰り返すループ処理が複数有ります。「For Next ・Do While Loop・Do Until Loop・Do Loop While」など、ループ内で処理実行する内容や繰り返すループ条件に応じて使い方が様々あります。ループ条件が処理内容より、始めにある場合と終わりにある場合など、処理条件に応じて使い分ける必要があります。今回は、EXCEL VBAでの繰り返し処理に関する説明と使い方を交えて同じサンプルプログラムを使って説明を致します。
また、過去にもFor Next・Do Loop Whileなどの説明ページもありますので、参照して下さい。

 

 

EXCEL VBA For Next Stepの説明(ループ処理:前判定)

 

 ●書式の説明 【For Next  step】

※For Next Stepは、他のループステートメントと比べても、分かり易くかつStepを利用する事で、自在に加算・増減する数値を設定する事ができます。

For Next のStep(ステップ)の使い方
1ずつ加算For I = 1 to 10
[ 何も設定しない]
2ずつ加算For I = 2 to 10 Step 2
-1ずつ減算For I = 10 to 1 Step -1
-2ずつ減算For I = 10 to 0 Step -2

 

 

 ●プログラム説明 【For Next Step】サンプル①
下記のサンプルプログラムは、For Nextを利用したサンプルプログラムです。1月~12月をA列に順番に表示するプログラムです。

 

 

●実行前~実行後 ※プログラム実行後、A列に1月から12月まで表示されました。(画面クリックして拡大)

 

 

●プログラム説明 【For Next Step】サンプル②
下記のサンプルプログラムは、For Next Stepを利用したサンプルプログラムです。2~12まで変数をループさせます。変数の増分がStep+2で増分させるので、変数の値が2・4・6・・・と偶数月として順番にA列へ表示するサンプルプログラムです。

 

 

●実行前~実行後 ※プログラム実行後、偶数月がA列に表示されました。(画面クリックして拡大)

 

●プログラム説明 【For Next Step】サンプル③
下記のサンプルプログラムは、For Next Stepを利用したサンプルプログラムです。Step-1を設定していますので、変数(I)を減らしながらループさせます。今回は、10階~1階までカウントダウンさせるように、A列に表示させます。

 

 

●実行前~実行後 ※プログラム実行後、A列に10階から1階まで階数を減らしながらセルに転記されました。
(画面クリックして拡大)

 

●プログラム説明 【For Next Step】サンプル④ 2重ループ
下記のサンプルプログラムは、For Next Stepを利用したサンプルプログラムです。今回は、For Next を利用して2重ループさせたプログラムです。横5列×縦10行に0~49番までの背景色をセルに表示させます。

 

 

●実行前~実行後 ※プログラム実行後、縦10行・横5列に0~49番までの背景色が表示されました。
   (画面クリックして拡大)

 

 

 

EXCEL VBA Do While Loopの説明(ループ処理:前判定)

 

 ●書式の説明 【Do While Loop】 

【注意】
For Next以外のループ処理は、条件式に該当するまで永久に繰り返しますので、変数などを加算するなど条件に一致するように変化させる必要があります。

例:    Do While I > 10
   I = I + 1     ‘Iが10を超えるまで加算する。
Loop

 

 

 ●プログラム説明 【Do While Loop】サンプル①
下記のサンプルプログラムは、Do While Loopを利用したサンプルプログラムです。1月~12月をA列に順番に表示するプログラムです。

 

 

●実行前~実行後 ※プログラム実行後、A列に1月から12月まで表示されました。(画面クリックして拡大)

 

 

 

●プログラム説明 【Do While Loop】サンプル②
下記のサンプルプログラムは、Do While Loopを利用したサンプルプログラムです。2~12まで変数をループさせます。変数の増分が+2で増分させるので、変数の値が2・4・6・・・と偶数月として順番にA列へ表示するサンプルプログラムです。

 

 

 

●実行前~実行後 ※プログラム実行後、偶数月がA列に表示されました。(画面クリックして拡大)

 

 

 ●プログラム説明 【Do While Loop】サンプル③
下記のサンプルプログラムは、Do While Loopを利用したサンプルプログラムです。変数(I)の値を-1ずつ減らしながらループさせます。今回は、10階~1階までカウントダウンさせるように、A列に表示させます。

 

 

●実行前~実行後 ※プログラム実行後、A列に10階から1階まで階数を減らしながらセルに転記されました。
(画面クリックして拡大)

 

 

●プログラム説明 【Do While Loop】サンプル④ 2重ループ
下記のサンプルプログラムは、Do While Loopを利用したサンプルプログラムです。今回は、Do While Loop を利用して2重ループさせたプログラムです。横5列×縦10行に0~49番までの背景色をセルに表示させます。

 

 

●実行前~実行後 ※プログラム実行後、縦10行・横5列に0~49番までの背景色が表示されました。
   (画面クリックして拡大)

 

 

 

EXCEL VBA Do Until Loopの説明(ループ処理:前判定)

 

 ●書式の説明 【Do Until Loop】

【注意】
For Next以外のループ処理は、条件式に該当するまで永久に繰り返しますので、変数などを加算するなど条件に一致するように変化させる必要があります。

例:    Do Until I > 10
   I = I + 1     ‘Iが10を超えるまで加算する。
Loop

 

 

 ●プログラム説明 【Do Until Loop】サンプル①
下記のサンプルプログラムは、Do Until Loopを利用したサンプルプログラムです。1月~12月を順番にA列へ表示するプログラムです。

 

 

 

●実行前~実行後 ※プログラム実行後、A列に1月から12月まで表示されました。(画面クリックして拡大)

 

 

 

●プログラム説明 【Do Until Loop】サンプル②
下記のサンプルプログラムは、Do Until Loopを利用したサンプルプログラムです。2~12まで変数をループさせます。変数(I)の増分が+2で増分させるので、変数の値が2・4・6・・・と偶数月としてA列に順番に表示するサンプルプログラムです。

 

 

●実行前~実行後 ※プログラム実行後、偶数月がA列に表示されました。(画面クリックして拡大)

 

 

 

 ●プログラム説明 【Do Until Loop】サンプル③
下記のサンプルプログラムは、Do Until Loopを利用したサンプルプログラムです。変数(I)の値を-1ずつ減らしながらループさせます。今回は、10階~1階までカウントダウンさせるように、A列に表示させます。

 

 

●実行前~実行後 ※プログラム実行後、A列に10階から1階まで階数を減らしながらセルに転記されました。
(画面クリックして拡大)

 

 

 

●プログラム説明 【Do Until Loop】サンプル④ 2重ループ
下記のサンプルプログラムは、Do Until Loopを利用したサンプルプログラムです。今回は、Do Until Loop を利用して2重ループさせたプログラムです。横5列×縦10行に0~49番までの背景色をセルに表示させます。

 

 

●実行前~実行後 ※プログラム実行後、縦10行・横5列に0~49番までの背景色が表示されました。
   (画面クリックして拡大)

 

 

 

EXCEL VBA Do Until Loopの説明(ループ処理:後判定)

 

 ●書式の説明 【Do Until Loop】終わり判定(1回は処理を実行する)

【注意】
For Next以外のループ処理は、条件式に該当するまで永久に繰り返しますので、変数などを加算するなど条件に一致するように変化させる必要があります。

例:    Do
          I = I + 1     ‘Iが10を超えるまで加算する。
Loop Until I > 10

 

 

 ●プログラム説明【Do Until Loop】サンプル①  (終わり判定)
下記のサンプルプログラムは、Do Until Loopを利用したサンプルプログラムです。1月~12月を順番にA列へ表示するプログラムです。
※終わり判定でループ処理を実行しています。

 

 

 

●実行前~実行後 ※プログラム実行後、A列に1月から12月まで表示されました。(画面クリックして拡大)

 

 

 

●プログラム説明【Do Until Loop】サンプル②  (終わり判定)
下記のサンプルプログラムは、Do Until Loopを利用したサンプルプログラムです。A列に表示されている名簿リストをB列に名簿リストを転記するサンプルプログラムです。

 

 

●実行前~実行後 ※プログラム実行後、A列の名簿リストがB列に転記されました。(画面クリックして拡大)

 

 

 

●プログラム説明【Do Until Loop】サンプル③  (終わり判定)
下記のサンプルプログラムは、上記サンプルプログラムの応用になります。A列の名簿リストの内容がB列に転記する際に何行目まで転記するか、指定する事が出来ます。

 

 

●実行前~実行後 ※プログラム実行後、A列に10階から1階まで階数を減らしながらセルに転記されました。
(画面クリックして拡大)

 

 

 

EXCEL VBA Do While Loopの説明(ループ処理:後判定)

 

 ●書式の説明 【Do While Loop】終わり判定(1回は処理を実行する)

【注意】
For Next以外のループ処理は、条件式に該当するまで永久に繰り返しますので、変数などを加算するなど条件に一致するように変化させる必要があります。

例:    Do
     I = I + 1     ‘Iが10を超えるまで加算する。
Loop  While I > 10

 

 

●プログラム説明 【Do While Loop】サンプル① (終わり判定)
下記のサンプルプログラムは、Do While Loopを利用したサンプルプログラムです。1月~12月をA列に順番に表示するプログラムです。

 

 

●実行前~実行後 ※プログラム実行後、A列に1月から12月まで表示されました。(画面クリックして拡大)

 

 

 

●プログラム説明【Do While Loop】サンプル②  (終わり判定)
下記のサンプルプログラムは、Do While Loopを利用したサンプルプログラムです。A列に表示されている名簿リストをB列に名簿リストを転記するサンプルプログラムです。

 

 

●実行前~実行後 ※プログラム実行後、A列の名簿リストがB列に転記されました。(画面クリックして拡大)

 

 

●プログラム説明【Do While Loop】サンプル③  (終わり判定)
下記のサンプルプログラムは、上記サンプルプログラムの応用になります。A列の名簿リストの内容がB列に転記する際に何行目まで転記するか、指定する事が出来ます。

 

 

●実行前~実行後 ※(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。