【Access VBA】Do WhileとDo Untilの違いと使い方

Access VBAを勉強していると、Do WhileDo Untilという繰り返し処理が出てきます。

ただ初心者だと、

  • 何が違うの?
  • どっちを使えばいい?
  • For文とどう違う?

と混乱しやすいポイントです。

特にAccessでは、次のようなループ処理を頻繁に使います。

  • テーブル処理
  • レコード操作
  • CSV出力
  • データ更新

この記事では、Do WhileとDo Untilの違いを、初心者向けにやさしく解説します。

実務でよく使うレコード処理や、無限ループ対策まで紹介するので、Access VBAを学び始めた人はぜひ参考にしてください。

目次

Do WhileとDo Untilとは?

結論からいうと、どちらも「繰り返し処理」です。

つまり、同じ処理を何回も実行するための構文です。

ただし、条件の考え方が少し違います。

Do Whileの意味

Do Whileは、条件がTrueの間、繰り返すという意味です。

Do Untilの意味

一方、Do Untilは、条件がTrueになるまで、繰り返すという意味になります。

Do WhileとDo Untilの基本構文

まずは基本構文から見ていきましょう。

Do Whileの基本構文

Do While 条件
    繰り返したい処理
Loop

Do Whileのサンプルコード

Dim i As Integer
i = 1

Do While i <= 5
    Debug.Print i
    i = i + 1
Loop

コードの目的

1〜5までを順番に表示する処理です。

実行結果

1
2
3
4
5

1行ずつ解説

Dim i As Integer

で繰り返し回数を管理する変数を作成しています。

次に、i = 1で開始値を設定しています。

Do While i <= 5

で「iが5以下の間」処理を続けます。

最後に、i = i + 1で値を増やしています。

これが非常に重要です。

この処理を書かないと条件が変化せず、無限ループになります。

Do Untilの基本構文

Do Until 条件
    繰り返したい処理
Loop

Do Untilのサンプルコード

Dim i As Integer
i = 1

Do Until i > 5
    Debug.Print i
    i = i + 1
Loop

Do Whileとの違い

Do Whileは、

Do While i >;= 5

つまり、5以下の間続けるという意味です。

一方Do Untilは、

Do Until i > 5

つまり、5より大きくなるまで続けるという意味になります。

結果は同じになることが多いですが、考え方が逆になります。

Access実務でよく使うレコード処理

Access VBAでは、レコードを順番に処理する場面が非常によくあります。

例えば、次のような例です。

  • CSV出力
  • データ更新
  • 集計処理
  • データチェック

実務では特に、Do Until rs.EOFをよく使います。

実務サンプルコード

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("T_社員")

Do Until rs.EOF
    Debug.Print rs!社員名
    rs.MoveNext
Loop

rs.Close
Set rs = Nothing

コードの目的

テーブル「T_社員」の全社員名を順番に処理しています。

EOFとは?

EOFは、最後のレコードに到達したかを表します。

つまり、Do Until rs.EOFは、最後まで繰り返すという意味になります。

MoveNextが重要

rs.MoveNextで次のレコードへ移動します。

これを書かないと、同じレコードを永遠に処理し続けます。

初心者がかなりハマりやすいポイントです。

無限ループになる原因と対策

VBA初心者が最もやりやすいミスが、無限ループです。

NGコード

Dim i As Integer
i = 1

Do While i <= 5
    Debug.Print i
Loop

なぜ無限ループになる?

このコードには、i = i + 1がありません。

つまりiがずっと1のままなので、i <= 5が永遠にTrueになります。

実務での確認ポイント

ループを書くときは、条件を変化させるコードがあるかを必ず確認しましょう。

Exit Doで途中終了する方法

途中でループを終了したい場合は、Exit Doを使います。

サンプルコード

Dim i As Integer
i = 1

Do While True
    If i > 5 Then
        Exit Do
    End If

    Debug.Print i
    i = i + 1
Loop

実務での使い分けとまとめ

実務では、次の感覚で使い分けるとわかりやすいです。

Do Whileが向いている場面

  • ログイン中
  • 接続中
  • ファイル存在中

Do Untilが向いている場面

  • EOFまで
  • 指定値になるまで
  • 空欄が出るまで

Access VBAでは、Do Until rs.EOFを非常によく使います。

初心者のうちは、

  • Do While = 条件中続ける
  • Do Until = 条件成立まで続ける

と覚えておけば十分です。

Do WhileとDo Untilは、どちらもAccess VBAで頻繁に使う基本構文です。

特に重要なのは、条件を変化させるコードを書くことです。

ここを忘れると無限ループになります。

まずは小さいサンプルコードを実際に動かしながら、

  • i = i + 1
  • MoveNext
  • EOF

の動きを確認してみてください。理解がかなり深まります。

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次