Vba で do while ループを使用するにはどうすればよいですか?
VBA Do while は、条件を指定する必要があるループであり、ループを実行するにはその条件が true のままである必要があります。簡単に言うと、まず指定した条件が true かどうかをチェックし、その条件が true の場合はループを実行し、それ以外の場合は何も実行しません。
各反復で条件をテストし、その後でのみ命令を実行します。 Excel にワークシートを追加したいが、完全なワークシート数が 12 以下であると想像してください。この場合、do-while ループを使用してこのコードを作成できます。
構文
後続の各ループの VBA 構文は次のとおりです。
Do While Condition [statements] Loop

- 条件:これは指定する条件であり、ループを実行するにはこの条件が true である必要があります。
- ステートメント: Do While ループで条件を実行するコード行が true です。
- Loop : これはループの反復の終了ステートメントであり、VBA に戻って条件を再度テストするように指示します。
DO While ループを理解するための例
Do While ループを理解するために、ワークシートの合計数が 12 未満の場合にワークシートをワークブックに追加するコードを作成してみましょう。追加するシートの数を VBA に指示する必要はなく、このコードを実行するたびに常に合計 12 シートが作成されます。
次の手順を使用します。
- まず、キーボードで「Do While」と入力する必要があります。
- 次に、ワークブック内のワークシートの合計数が 12 未満かどうかを確認できる条件を記述する必要があります。
- これを行うには、ワークシートの合計数をカウントし、それを数値 12 と比較する以下のコードを使用する必要があります。
- 次に、ワークシートを追加するコードを記述する必要があります。このコードは、指定した条件が true の場合に実行されます。
- 最後にキーワード「Loop」を入力してコードを完成させます。
先ほど書いた完全なコードは次のとおりです。
Sub vba_do_while_loop() Do While ActiveWorkbook.Worksheets.Count < 12 Sheets.Add Loop End Sub
次に、このコードがどのように機能するかを説明します。指定した条件はワークブック内のワークシートの総数をチェックし、次にワークシートの数を 12 と比較する小なり演算子を使用します。
ワークシートの数が 12 未満の場合、ループは実行を続けて新しいワークシートを追加し続けますが、ワークシートの数が 12 に達するとループは停止します。
これは、簡単に言えば、ワークシートの数が 12 未満である限り、ループは実行され続けるということです。

ここで重要なのは、先ほど作成したコードでは、追加するワークシートの数を指定する必要はありませんが、次のループに進む場合は、追加するワークシート計算の数を指定する必要があります。
ループを作成します
Do Loop While は、Do While Loop の拡張バージョンであり、機能は同じですが、条件をテストするときにわずかな違いがあります。
In Do Loop 指定した条件をテストする前にループを 1 回繰り返し実行し、条件が true の場合はループを継続します。
パスワードをチェックしてコードを実行し、パスワードが間違っている間ループを継続するコードを作成するとします (これは例で示されています)。
構文
VBA Do Loop While の構文は次のとおりです。

- Do: これは、Do While ループの開始キーワードです。
- ステートメント: これは、ループ内で実行するコードの行です。
- Loop While: これは、ループを継続し、指定した条件をテストするためのキーワードです。
- 条件: これは、ループが 2 回目の反復を開始してループを継続する前にテストする条件です。
Do Loop While の構文でわかるように、最初にステートメントを 1 回実行し、次に条件に移動してテストし、その条件が true の場合はループを開始し、条件が有効である間ループを継続します。真実。
DO ループを理解するための例
do while ループを理解するために、入力ボックスを表示してユーザーにパスワードの入力を求めるコードを作成してみましょう。
この入力ボックスは、ユーザーが入力したパスワードが間違っていることを 5 回まで明確に表示し続け、その後は手順を実行せずに入力ボックスが表示されなくなります。
- まず、パスワードと試行カウンタを保存するために必要な 2 つの変数を宣言します。
- その後、キーワード「Do」を入力します。ここでは、構文で見たように、最初に条件を定義する必要はありません。
- 次に、ユーザーにパスワードの入力を求める入力ボックスを表示するコード行を記述する必要があります。
- ここから、最大 5 までカウントできるカウンターを設定する必要があります (ループの反復ごとに加算されます)。
- 次に、キーワード「Loop While」を入力し、ユーザーが入力ボックスに入力した値をチェックし、カウンタ値が 5 未満かどうかをテストできる 2 つの条件を設定します。
- 最後に、実行したいコードを記述します。ここでは、ユーザーが入力したパスワードが正しい場合にメッセージ ボックスを表示する IF ステートメントを使用しています。
Sub vba_do_loop_while() Dim varPassword As Variant, i As Double Do varPassword = InputBox _ ("Enter the password to start the procedure:", _ "Check Password 1.0") i = i + 1 Loop While varPassword <> "CorrectPassword" And i < 5 If varPassword = "CorrectPassword" Then MsgBox "Your Password is Correct" End If End Sub
このコードについて説明しましょう。
- このコードの最初の部分には、ユーザーに入力ボックスを表示してパスワードの入力を求めるdo while ループがあります。
- パスワードが間違っている場合は、ユーザーが正しいパスワードを入力するまでループが実行され続けます。
- ただし、ループの繰り返しをカウントするためにカウンターを使用しているため、このカウンターが 5 に達すると、ループは停止します。
関連するチュートリアル
- VBA ループ (初心者から上級者まで)
- VBA 選択ケース
- Excel で VBA を使用してすべてのシートをループする
- VBA を使用した範囲のループ (列、行、および UsedRange)
- VBA FOR LOOP (For Next、For Each)
- GoTo VBA 宣言