Excel VBA入門書である拙著『いちばんやさしいExcel VBAの教本』は、初学者向けに学習項目を減らすために、あえて書かなかった項目がたくさんあります。
普通の変数(値型・基本型)、制御構文はIf文とFor~Next文だけを解説し、本書で扱っていない学習項目については、どの順序で学習すべきか等をLesson 78「本書で扱っていない項目を省略した理由と学習するタイミング」でお伝えしています。
実は、Lesson 78にも書いていないループの構文が、VBAには存在しています。
While~Wendというループ文です。
While~Wend文を使ったサンプルマクロ
簡単なサンプルを見ましょう。
以下のSubプロシージャを実行すると、B1:B5セルに「合格」と入力されます。
Dim i As Long i = 1
While i <= 5
Range("B" & i).Value = "合格"
i = i + 1
Wend
End Sub
Whileの行とWendの行がセットになっており、Whileの直後にループ処理し続ける条件を指定します。
上記のSubプロシージャは、「i <= 5」(変数iが5以下の間)、WhileとWendの間に書かれている、
Range("B" & i).Value = "合格"
i = i + 1
が繰り返し実行されます。
While~Wend文はDo While~Loop文と同じ
上記のWhile~Wend文は、Do~Loop文の一種Do While~Loopと同じ挙動をします。
Dim i As Long i = 1
Do While i <= 5 ' While i <= 5
Range("B" & i).Value = "合格"
i = i + 1
Loop ' Wend
End Sub
Do Loop文のほうが、ループを抜ける条件や回し続ける条件を柔軟に指定できるのに対し、While~Wend文はWhileの直後にループ処理を続ける条件指定しかできません。
While~Wend文を使ったコードは、ほとんどないのではないかと思いますけれど、万一見かけたときは、上記のとおりDo While~Loopと同じだと思って読んでください。
将来読む人の負荷を下げる書き方をしましょう
ちなみに、このようなあまり見かけないコードを見たときに、自分でテストしてみることは、とてもいいことです。
ですが、実際に使うコードの中に、残すべきではありません。
実務で使うプログラムは、(未来の自分を含む)将来そのコードを読む人の負荷を少しでも下げることを考え、読むときに苦労しないような書き方をしましょう。
- Newer:Dir関数でファイル名を配列に
- Older:Excelで保存したCSVがインポートできない? 読み込めない?
Home » いちばんやさしいExcel VBAの教本 » VBAにはWhile~Wendというループ文もある