この記事を読むのに必要な時間は約 8 分です。

 

「For文」って知っていますか?

 

VBAをやるなら、ぜったい知っておきたい、ループの文法の1つです。

 

同じような作業を何度も行うならループの処理が便利。
意図したとおりに繰り返せれば、For文のことが好きになるかもしれません。

 

今回は、For文を使ってセルに値を入れながら説明したいと思います。

スポンサーリンク

ループする変数を定義

For文の場合、何回ループするのか指定することが出来ます。

 

「何回」のところを、変数を使って表現するので、まずはこの変数を用意します。

VBA_For文の書き方

 

整数型の変数「i」を定義するなら、書き方はこれ。

「Integer」は整数という意味で、頭文字を取って「i」が使われることが多いです。

 

教材とか学校で最初に習うときなど、この変数を見かけるんじゃないでしょうか。

 

とりあえず変数を用意したら、For文を書きます。

VBA_For文の書き方

For ~ Next の書き方

ざっくり日本語で書くと、

こうなります。

 

変数iを使って、1から10までループさせたいなら、

VBA_For文の書き方

 

ついでにループさせる処理も書くと、

VBA_For文の書き方

 

Sheet1の指定したセルに、変数iを入れていく処理です。

 

「Cells」は、Cells(行番号, 列番号) の書き方です。
B3セルなら、Cells(3, 2)です。

 

「Range」の場合はRange(“B3”) のように書くので、「行と列がRangeと逆だ」と考えると覚えやすいかもしれません。

実行前の準備

ブレイクポイントを入れてみる

プログラムを実行すると、変数iの値がどんなふうに変わっていくのか知りたいんじゃないでしょうか。

 

途中でいったん止まるには、ブレイクポイント(赤い●のやつ)を使います。

 

左クリックで設定でき、設定したところまで処理が進むと一時停止してくれます。
空の行や変数の定義など、一部の個所には入れれません。

VBA_For文の書き方_ブレイクポイント

ローカルウインドウを表示しておく

ブレイクポイントなどで一時停止しているときに、変数の上へマウスポインターを持っていくと、今何の値が入っているのか表示されます。

 

でも何度もコメントをチラ見するような変数の確認方法はメンドクサイので、「ローカルウインドウ」を使います。

VBA_For文の書き方

10回ループしてみる

早速10回ループさせてみたいと思います。

 

B3のセルから下へ、1、2、3・・・、10まで数字が入ってくれる想定です。

VBA_For文の書き方

 

処理開始はF5キーまたは緑色の三角のボタンを押下。

VBA_For文の書き方

ちゃんとブレイクポイントで止まりました。

 

ローカルウインドウを見ると、iに1が入っています。

VBA_For文の書き方

 

F8キーで1ステップだけ次に進みます。

VBA_For文の書き方

 

ここでExcelシート側に表示を切り替えてみましょう。

 

変数iの値「1」が、B3セルに入力されました。

VBA_For文の書き方

 

もう1度F8キーを押すと、2周目に入りました。
変数のiも2になっています。

VBA_For文の書き方

 

さらにF8キーを押すと、

VBA_For文の書き方

 

シート側では、変数iの値が2になって、セルに入力されました。

VBA_For文の書き方

 

順調に大きくなっています。
問題なさそうなので、ブレイクポイントを外してF5キーで最後まで動かします。

VBA_For文の書き方

 

想定通り10まで入りました!!

VBA_For文の書き方

ループを抜ける

最後までループさせたいこともありますが、時にはループの途中で抜けたいこともあります。

For文を抜けるなら普通はこれ

For文を抜けるなら、使うのはこれです。

 

例えば、i = 5になった時にFor文を抜けるなら、

これで6以降は進みません。

 

実際にやってみます。

 

i = 5になって、IF文に入りました。
「Exit For」にブレイクポイントを入れて止めていますが、F8キーで1ステップ進めると・・・

VBA_For文の書き方

 

「Exit For」を通ると、For文を抜けEnd Subへ飛びました。

VBA_For文の書き方

End Subで処理は終わりです。

 

シート側を見てみると、5までしか入っていません。
意図した通り、For文を抜けられたことが分かります。

VBA_For文の書き方

For文を抜ける、悪い例

まったくおすすめしませんが、For文を抜けるにはこんな書き方も出来ます。

 

10までループするので、i = 5の時に10を入れてしまえば、「Next i」で11になるので最大値を超えてループを抜けます。

 

何でこのやり方がよろしくないのか?
それは、メンテする回数が無駄に増えるからです。

 

例えば、最大値を10から15に変えたとします。
本来ならソースコードの変更は1ステップだけ、

で良いんです。

 

でも、変な抜け方をしていると、

に変えないといけません。

 

余計な手間が増えますし、最大値を変数で書いていたら、何のための「i = 10」なのか分かりづらくなってしまいます。

 

そんなこんなで、「Exit For」推奨です!!

スポンサーリンク

まとめ:処理をループさせる、For-Nextの書き方

ループの1つ、For文の書き方でした。

 

For とNextの間に書いた処理を、最大値までの間繰り返すことが出来ます。

 

ループを抜けるにはExit For です。

 

プログラム言語によって書き方は変わりますが、ほとんどの言語にFor文があるので、覚えておいて損はないはず。

 

ぜひ使ってみてくださいね。

 

最後までお読みいただき、ありがとうございました。