EXCEL VBA For Next Stepの応用編[ループ・繰り返し処理] (テクニック)

 

EXCEL VBA For Next Stepの応用編[ループ・繰り返し処理] (テクニック)

 

 ●はじめに

EXCEL VBA内で多く利用されるFor Next ステートメントですが、今回は、For NextStepの利用方法の応用編という事で、様々な形で利用されているFor Nextの利用方法をサンプルプログラムを交えて説明したいと思います。For文と言えば、基本プログラム内では繰り返し処理に利用されます。セルの参照先を移動したり、数値を繰り返して合計値などを計算したりする事に利用されます。今回は、基礎では説明が出来なかったテクニック部分を含めて説明をいたします。

●For Nextステートメントの基礎については、下記のURLを参照して下さい。
https://akira55.com/fornext/

 

 

 

繰り返し処理から抜ける(For文から抜ける:Exit For)

 

 ●プログラム説明 (サンプルプログラム①)
下記のサンプルプログラムは、For~Nextから途中で抜けるExit Forを使ったサンプルプログラムです。
【プログラム実行条件】
●人口のデータは、昇順で並べる

 

 

 

 ●実行前~実行後 ※プログラム実行後、都道府県ごとの人口データをFor文で上から参照して、人口が500万人を下回った時点でループ処理から抜け出しました。
(画面クリックして拡大)

 

 

 

 

氏名の一覧データからフリガナ毎に振り分ける (For文とSelect caseとの組み合わせ)

 

 ●プログラム説明 (サンプルプログラム②)

下記のサンプルプログラムは、For文とSelect caseを組み合わせたサンプルプログラムです。名前(フリガナ)の一覧データからア行・カ行・・毎に振り分けるサンプルプログラムです。

 

 

 ●実行前~実行後 ※プログラム実行後、C列の氏名(半角フリガナ)からフリガナ毎に、B列の氏名が振り分けられました。
(画面クリックして拡大)

 

 

 

 

氏名の一覧データか男性と女性に振り分ける (For文とIF文との組み合わせ)

 

 ●プログラム説明 (サンプルプログラム③)

下記のサンプルプログラムは、For文とIF文を組み合わせたサンプルプログラムです。社員の一覧データから性別毎に、F列は男性・G列は女性にB列の名前を振り分けるサンプルプログラムです。

 

 

 ●実行前~実行後  ※プログラム実行後、社員のデータ一覧データのD列の性別からF列:男性・G列:女性毎に、B列の氏名を振り分けました。
(画面クリックして拡大)

 

 

 

 

連続データ内の空白データを飛ばしてデータを転記する。(For文とIsEmpty(空白)の組み合わせ)

 

 ●プログラム説明 (サンプルプログラム④)

下記のサンプルプログラムは、For文とIsEmptyを組み合わせたサンプルプログラムです。社員の一覧データを左表から右表に転記するプログラムです。左表から右表にデータを転記する際に、データに空白が有る場合は、スキップして転記します。
【転記条件】
●社員番号・氏名・住所いずれも記入されていれば、転記する。

 

 

 

 ●実行前~実行後  ※プログラム実行後、左表から右表へ空白データでがある社員データ以外が右表へ転記されました。
(画面クリックして拡大)

 

 

 

小数点以下でループさせる。1より小さい間隔でループ(For Next Step)増分を小数点

 

 ●プログラム説明 (サンプルプログラム⑤)

下記のサンプルプログラムは、For Next Stepでステップの間隔を小数点以下で利用する方法を説明いたします。今回のサンプルプログラムは、ドル円相場の0.25セント単位でドル円相場の価格を一覧として表示します。

Currency型:通貨型の変数を利用して増分を小数点で管理します。

【プログラム実行手順】
①現在のドル円価格をインプットボックスに入力します。
②For文で0.25セント単位で5ドルまで、ドル円価格を計算表示されます。

 

 

 ●実行前~実行後  ※プログラム実行後、左表から右表へ空白データでがある社員データ以外が右表へ転記されました。
(画面クリックして拡大)

 

 

 

 

指定した行間隔で表の背景色を付けます。(For Next Step)増分・整数

 

 

 ●プログラム説明 (サンプルプログラム6)
下記のサンプルプログラムは、作成した表に対して指定した行間隔に背景色の色を塗りつぶします。指定する行間隔については、整数で指定した数値分、増分します。
●増分は、For Next Stepで指定します。

 

 

 

 ●実行結果  ※プログラム実行後、インプットボックスが表示され、指定する背景色の行間隔を数値で指定します。指定した数値で背景色が塗りつぶしされました。
(画面クリックして拡大)

 

 

 

ループ内の処理を飛ばす。(For文とGoto文の組み合わせ)

 

 ●プログラム説明 (サンプルプログラム⑦)

下記のサンプルプログラムは、For文とGoto文を組み合わせたサンプルプログラムです。For文は、一定の処理を繰り返しますが、処理条件にもよりますがループ内処理を行いたくない事も有ると思いますが、この場合は、1例としてGoto文を利用してループ内処理を飛ばす事が出来ます。今回、説明するサンプルプログラムは、表のC列「連絡済み」が「済」の場合は、「氏名」の転記処理(E列に名前を転記)を飛ばす(スキップ)プログラムになります。

 

 

 ●実行前~実行後  ※プログラム実行後、C列の「連絡済み」を順番に参照して、「済」の場合は、E列に氏名を転記する処理をスキップされました。※C列が空白の場合(「済」以外)は、E列への転記処理が実行されます。
(画面クリックして拡大)

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。●For Nextステートメントの基礎については、下記のURLを参照して下さい。
https://akira55.com/fornext/