【VBA学習】繰り返し処理に便利なWhile文の特徴と使い方

  • このエントリーをはてなブックマークに追加

前回の記事で、処理を繰り返し行いたい時に使うFOR文について紹介しました。

【VBA学習】処理を繰り返したい時便利なFOR文の使い方

しかし、FOR文の場合、繰り返したい回数が決まっていないと使う事が出来ません

今回紹介するWhile文繰り返したい回数がわからない時、繰り返しを行う場合の条件を設定して繰り返し処理をさせることが出来ます。

While文とは?

While文はFOR文と同じく、繰り返し処理を行う時に使う文法です。

違う点は、繰り返し条件の指定の仕方です。

前回、FOR文を使う例として下のような場合を紹介しました。

 

D列に結果を表示させる処理を「Aさん~Fさん」までの六人分繰り返し処理を行えばよかったのですが、この人数が増えたり減ったりした場合、FOR文だけでは対処できません。

こんな時にWhile文が役に立ちます。

While文は回数を条件に指定するのではなく、指定した条件が正しい(True)場合、繰り返し処理をします

上の例の場合、名前列に名前が書かれている場合処理を繰り返し、書かれていない空白のセルに当たったとき、繰り返しを終了させるように設定することが出来ます。

 

While文の使い方

While文の書き方

 

Whileの隣に条件を記述し、条件が満たしていれば、下の処理を行います。

処理が行われると、また上のWhileに戻ってきて条件が満たしているか確認します。

条件が満たさなくなった場合、While文を抜けて、下のコードに進むようになります。

このようなグルグル回るような流れで繰り返し処理が行えます。

 

実際に動かしてみよう

どんな動きをするのか、実際に動かしてみましょう。

まずはカンタンな動作から。

下のコードをコピーして、モジュールに貼り付けて実行してみましょう。

コメントに書いてある通りですが、「LoopNum」という変数の中身が5より小さい場合、Whileの中の処理を行います。

中の処理では「MsgCode」という変数に「あ」をくっつけています。

そして、「LoopNum」の値に+1させています。

 

実際に動かしてみた結果がこちら↓

 

「あ」が5つ連結されて表示されています。

While文で繰り返し処理が5回行われたことが分かりますね。

 

また、上で紹介した点数に応じた結果を出力させる処理を繰り返しさせるのはこのように記述します↓

ここで行っている事は、前回の記事でFOR文を使って作ったコードをWhile文に切り替えているだけです。

Whileの中身の処理は基本的に一緒ですが、Whileの条件に「セルの値が空白でなければ」と記述しているので、繰り返し処理の中で、繰り返すごとに下の行のセルの値を入れ直しています

 

実際の動きがこちら↓

 

強制的に繰り返し処理から抜けたい場合

Whileの条件以外で繰り返し処理を止めたい場合、While~Wendの間に「Exit」を記述させれば抜けることが出来ます。

 

使用時の注意点

Whileの条件を指定する時、必ずどこかで終了出来るように指定させるようにしましょう。

というのは、どんなに繰り返し処理を行っても条件を満たし続けると無限ループになってしまうからです。

無限ループが起きると、「オーバーフロー」というエラーになり処理が中断されてしまいます。

 

まとめ

繰り返し処理を行う場合は、状況に応じてFOR文とWhile文を使い分けましょう。

でも、While文は予期しないパターンで無限ループになってしまう恐れがあるので、極力FOR文を優先的に使った方がいいと私は思います。

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*