【技術記事】最短最速で学ぶ!Excel VBA入門 – 第8回:繰り返し文 –

皆さん、こんにちは、
みむすたーです。

今日は、VBAでの繰り返し文について説明していきます。

もくじ

繰り返し文とは

プログラムを書いているとき、同一の処理を複数回処理させたい場合があります。
そんなときには、繰り返し文を使います。
繰り返し文は3行程度の少ないステップ数で、数十回、数百回、数千回、数万回、数億回…の繰り返しの処理を書くことができます。
VBAの繰り返し文には、以下のものがあります。

  • For 〜 To 〜 文
  • For Each 〜 In 〜 文
  • Do While 〜 文
  • While 〜文
  • Do Until 〜 文

For 〜 To 〜 文

For 〜 To 〜 文は、指定の回数の繰り返しを行うための繰り返し文です。
下記の初期値から最大値になるまで変数の値を1のインクリメント(1ずつ増加)を行いながら、繰り返しを行います。
最後の行の “Next 変数名” で、変数のインクリメントを行います。

Dim 変数名 As 整数型
For 変数名 = 初期値 To 最大値
    ' 初期値から最大値までの繰り返し処理
Next 変数名

For Each 〜 In 〜 文

For Each 〜 In 〜文は、配列やコレクションなどのデータの集まりからデータの個数分繰り返しを行う文です。
以下は、配列を使ったときのFor Each 〜 In 〜 文です。
以下の繰り返しについて少し補足しておくと、
For Each 変数名 In 〜の変数名は、事前の宣言は不要です。

Dim 配列の変数(配列の長さ) As 型名、または、オブジェクト名
For Each 変数名 In 配列の変数
    ' 配列の長さ分だけ繰り返し処理
Next 変数名

While 〜文

While 〜 文は、While の直後に指定する条件が成り立っている間ずっと繰り返しを行う文です。
条件とは、以前の 制御文 の説明にもあったように、比較演算子を指定することが一般的です。

While 条件
    ' 条件が成り立っている間繰り返される処理
Wend

Do While 〜 文

Do While 〜 文は、While〜文と同様に、直後に指定する条件が成り立っている間ずっと繰り返しを行う文です。
基本的には、 While 〜 文と同じです。

Do While 条件
    ' 条件が成り立っている間繰り返される処理
Loop

While 〜 文との違いは、Exit Doという文を使えるか否かです。
Exit Doという文は、条件が成り立っていなくても、繰り返し処理を中断するための処理です。
例えば、以下のサンプルのように使います。

Dim i As Integer
i = 1
Do While True
    If i = 100 Then
        Exit Do
    End If
    i = i + 1
Loop
MsgBox '繰り返し文が終わりました'

Do While Trueは、永遠に条件が成り立つため、無限に繰り返しを行います。
しかし、無限の繰り返し文の中に、i = 100 という条件で、Exit Doという処理があるため、
無限に繰り返しを行わずに、100回繰り返した段階で中断することができます。
上の例では、若干無理な使い方をしてしまいましたが、
Exit Do はこのように、繰り返し処理を中断することができます。

Do Until 〜 文

Do Until 〜 文は、Do While 〜 文 や While 〜 文とは逆です。
Do Until の直後に指定する条件が成り立たない間、ずっと繰り返しを行う繰り返し文です。

Do Until 条件
    ' 条件が成り立っていない間繰り返される処理
Loop

まとめ

  • 繰り返し文とは、数行で数十、数百、数千、数万、数億、の処理を繰り返すことができる文のことです。
  • VBAの繰り返し分には、For 〜 To 〜 文、For Each 〜 In 〜 文、Do While 〜 文、While 〜文、Do Until 〜 文などがあります。

今回は、以上です。
プログラミング初学者の方は、繰り返し文については、
利用頻度も高いので、ぜひ使えるようになっておきましょう。

コメント