Excelマクロのループ文(for、while)の使い方
※なばなの里 by Canon 6D 24-70mm
「クライアントごとに同じ処理をしないといけない」
「日付分のファイルを開いて計算しないといけない」
Excelを使っていると、同じことを日付分、クライアントごとにやることがあったりしませんか?
マクロのループ分を使うと、同じことを指定された数だけ繰り返しやってくれるので1クリックですべてのやることが終わります。
仕事を早く終わらせるためにも、使いこなせるようになってほしいです。
ループ文ってなに?
ループ文は、プログラミングの中で繰り返しやってくれる指示文のことです。
for文は、指定した数を繰り返します。
while文は、指定した条件中であれば繰り返します。
10回同じことを繰り返すときは、for文
「セルに何か入っているとき」という条件であれば、while文
ループ文でも状況に応じて使い分ける必要があるので気をつけてください。
ループ文の使い方
for文
For文の基本的な使い方です。
1For 変数 = 初期値 To 終了値 Step ステップ数
2 ' 実行するコード
3Next
10回繰り返すときはこのように書きます。
1For i = 1 To 10
2 ' 実行するコード
3Next
iが1のときに、実行するコードが行われます。
処理が終わると、iに1が足されてiが2となり、実行するコードがもう一度行われます。
その結果、10回実行されるわけです。
このとき、Stepの指示をしていませんが、1ずつ増える場合には省略して構いません。
2以上ずつ増やしたい場合には、このように書きます。
1For i = 1 To 10 Step 2
2 ' 実行するコード
3Next
While文
While文の基本的な使い方です。
1Do While 条件
2 ' 実行するコード
3 ' 条件を変更するコード
4Loop
条件には、数字の変数でもいいですし、「.Cells(x, 1) <> “”」のようにセルでも構いません。
具体的な例はこちら
1Do While i <= 10
2 ' 実行するコード
3 ' i = i + 1
4Loop
これは変数iを10になるまで繰り返し処理するループ文になりました。
先程のFor文と一緒になります。
セルの中身を条件にしたループ文はこちら
1Do While .Cells(i, 1) <> ""
2 ' 実行するコード
3 ' i = i + 1
4Loop
変数iが毎回1足されているので、セルを1個下にずらしながら実行するコードが行われています。
「<> “”」の表現は、セルが空になったらTrueになるので、ループが終了します。
ですので、日付が縦に入力されていて、日付文ループさせたい場合に使えるものです。
ループ文を2重にする2重ループ
やりたいことのなかには、行を移動しながら、列も移動させたいことがあると思います。
そういったときは、ループ文の中にループ文を入れて2重ループにしましょう。
1For i = 1 To 10
2 For j = 1 To 10
3 ' 実行するコード
4 Next
5Next
変数iが1のときに、変数jは1から10まで繰り返します。
変数iが2のときに、変数jは1から10まで繰り返します。
このように、10回繰り返すループ文を2重にすると10×10=100回繰り返すことができます。
2重ループは、少しむずかしいので徐々になれていきましょう。
Excel VBAを勉強するなら「できる大辞典」がおすすめです。
辞書なのでピンポイントで学ぶことができます。大学時代、2016年版を購入して勉強していましたが相当使いました。
ネットだけでも勉強はできますが、本を読みながらVBAを勉強したい方は購入してください。