【VBA】可変の繰り返し処理!Do〜Loop文の使用方法【5分でわかる】

可変の繰り返しを上手に使えてますか?

Excelマクロ(VBA)には数種類の繰り返し文が存在してます。
本記事では可変(繰り返す回数が決まってない)の処理が可能のDo〜Loop文の説明を行います

よく使用される例を5分でわかるように説明します。よろしくお願いします!

では、確認していきましょう!

この記事を読んで欲しい人
  • 繰り返し処理を学習中の人
  • 可変の繰り返し処理を知りたい人
  • 可変の繰り返し処理のが使用される例を知りたい人
この記事を読むと
  • Do〜Loop文の使用方法が理解できる
  • Do〜Loop文の使用例がわかる

関連記事

Do〜Loop文の基本

Do〜Loop文の基本

はじめにDo〜Loop文の使用用途基本的な使い方(構文)をまとめます。
使うべき時と使い方がわかるのでチェックしてみてください。

使用用途

Do〜Loop文がどのような時に使用使用されるかというと

可変であるものを繰り返す際に使用されます。

可変を繰り返すと言われてピンとこない人も多いかと思います。
使用される具体例も合わせて確認してみましょう。

  • 変数(カウンタ)が10以下である間繰り返す
  • セルの内容を上から確認していき、内容が空白になるまで繰り返す
  • 日付が明日になるまで処理を繰り返す

このような繰り返し処理を行いたい時に使用されます。
特に、例の2番目と3番目を実装する場合はDo〜Loop文を使用しないと実装できません。

繰り返し処理の幅を広げるためにはDo〜Loop文を習得する必要があると言えるでしょう。

基本構文

Do〜Loop文の基本構文の確認をしていきましょう

基本構文
Do {条件}
    処理
Loop {条件}

Do」と「Loop」については定数なのでDoとLoopが出てきたら本処理が行われていると考えましょう。

{条件}は繰り返し処理が終了される条件を記入する場所になります。
{条件}の入力方法と入力場所は2種類あります。順に確認してみましょう

WhileとUntilの違い

{条件}入力方法を確認していきましょう。
2種類あるどちらかを使用することができます。種類と特徴の説明を行います

入力方法
{While 条件}もしくは{Until 条件}

条件の部分には比較の演算子を入力してください。
では一つずつ説明します

入力方法①:Whileを使用する場合

Whileは条件に合致する間実行されます。

今日の間実行される

言い換えると日付が変わるまで実行されることになります。

入力方法②:Untilを使用する場合

Untilは条件に合致するまで実行されます。
言い換えると条件に合致するまでの間実行されることになります。

明日になるまで実行される

言い換えると日付が変わるまで実行されるようになります。

例ではWhileとUntilで同じ条件を確認しました。WhileでもUntilでも同じ処理ができますが使用方法が違うため両方とも特徴が理解しましょう。

条件を入力する場所の違い

{条件}を入力する場所での処理の違いを確認していきましょう。
2種類の場所に入力することができます。

入力する場所
{Doと同じ行}もしくは{Loopと同じ行}

1つずつ確認していきましょう。

入力場所①:Doと同じ行に入力する場合

条件式をDoと同じ場所に入力すると、Do〜Loop文の処理を行う前に条件に一致するかの比較をされます。

Doと同じ行に入った場合の説明
条件によっては一度も処理されない場合があるため注意が必要です。

入力方法②:Loopと同じ行に入力する場合

条件式をLoopと同じ場所に入力すると、Do〜Loop文の処理を行った後に一致するかの比較をされます。

Loopと同じ行に入った場合の説明
条件にかかわらず一度は実行されます。無限ループが発生しやすいので注意しましょう。

どちらも特徴がありますが、

初心者の方はLoopと同じ行に入力すれば良いかと思います。

理由はループの中の処理を行わない想定でコードを作成することは初心者には困難だからです。
詳しいことは考えずにLoopを同じ行に{while}か{Until}を入力しましょう。

Do〜Loop文の使用例

Do〜Loop文を使用したサンプルプログラムを確認していきます。
カウンタを使用してカウンタ値をメッセージボックスで出力する処理を20回繰り返すプログラムを作成しました。

サンプルプログラム

8行以降を確認してください。

Do〜Loop文を使用されていることがわかります

変数iが1から20までで繰り返し処理がされます。

Sub doLoop()

     ' カウンタ変数の宣言
    Dim i
     ' カウンタの初期値を設定
    i = 1
     ' Do〜Loop文の開始
    Do
        MsgBox i & " 回目の処理です"
        i = i + 1
    Loop While i <= 20

End Sub

Do〜Loop文の処理を確認

サンプルプログラムを例にDo〜Loop文の処理を確認してみましょう。
4行目以降を確認しましょう。

Dim i
 ' カウンタの初期値を設定
i = 1
 ' Do〜Loop文の開始
Do
    MsgBox i & " 回目の処理です"
    i = i + 1
Loop While i <= 20

処理の流れを確認

処理の流れを一つずつ確認していきます

①変数i(カウンタ)に初期値が設定される

①変数i(カウンタ)に初期値が設定される

②変数iが1の状態で1回目のループ処理が行われる

②変数iが1の状態で1回目のループ処理が行われる

③Do文まで処理が戻る

③Do文まで処理が戻る

④変数iが2の状態で2回目のループ処理が行われる

④変数iが2の状態で2回目のループ処理が行われる

⑤変数iが20以上になるまで繰り返される

⑤変数iが20以上になるまで繰り返される

今回の例では変数iをカウンタとして使ってます。

変数iの数値を1として宣言し、20以上になるまで処理が実行されます

このように使用される変数をカウンタと呼ばれます。
今後使用されることが多いので今回で覚えるようにしましょう。

まとめ

まとめ

いかがだったでしょう。
Do〜Loop文を使用した繰り返し処理の解説をしました。

  • カウンタを使用した繰り返しに使われる
  • 可変の値の繰り返し処理を行う時に使用される

覚えると便利な処理なのでこの記事を読んでマスターするようにしましょう!

ではまた

関連記事