- 開発技術
VBA入門_繰り返し処理(Do Loop)
- VBA
Do~Loop文を使った繰り返し処理
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
For~Nextは、繰り返す回数をあらかじめ指定するものでしたが、
Do~Loopは、繰り返す回数ではなく、繰り返す条件を指定するものです。
構文
1 2 3 4 5 |
Do [{While | Until} condition] [statements] [Exit Do] [statements] Loop [statements] |
または、次の構文を使用できます。
1 2 3 4 5 |
Do [statements] [Exit Do] [statements] Loop [{While | Until} condition] |
condition |
省略可能です。 真 (True) または偽 (False) を評価する数式、あるいは文字列式を指定します。 引数 condition の値が Null 値の場合、引数 condition は偽 (False) であるとみなされます。 |
statements |
引数 condition が真 (True) である間、または引数 condition が真 (True) になるまで繰り返し実行される、 任意の行数のステートメントを記述します |
上記構文の余分なものを消して、日本語に直してみましょう。
1 2 3 |
Do [While 条件式] ・・・処理・・・ Loop |
または、
1 2 3 |
Do [Until 条件式] ・・・処理・・・ Loop |
Whileは、条件を満たす間、・・・処理・・・を実行します。
Untilは、条件を満たす迄、・・・処理・・・を実行します。
Do Loop ステートメント
Do Loopでは条件によって繰り返し処理を指定することが可能であり、具体的な回数が分からない場合にはこちらが使われます。
ステートメント |
判定のタイミング |
繰り返し処理 |
Do While~Loop |
実行前 |
条件が真の間 |
Do~Loop While |
実行後 |
条件が真の間 |
Do Until~Loop |
実行前 |
条件が真になるまで |
Do~Loop While |
実行後 |
条件が真になるまで |
Do Loop 例文
Do Loop文を使って、「セルA1」から「セルA10」まで「1」を入力する事例です。
1 2 3 4 5 6 7 8 9 |
'使用例・Do Loop文 Sub Sample1() Dim i '変数iを宣言 i = 1 '変数iに1を入れる Do While i <= 10 '変数iが10以下の間処理を続ける Cells(i, 1) = 1 'A列のi行に1を入れる i = i + 1 '変数iを1増やす Loop 'Doの処理範囲はここまで End Sub |
または、
1 2 3 4 5 6 7 8 9 |
'使用例・Do Loop文 Sub Sample2() Dim i i = 1 Do Until i > 10 Cells(i, 1) = 1 i = i + 1 Loop End Sub |
または、
Whileは、条件を満たす間
Untilは、条件を満たす迄
従って、WhileとUntilの条件は、補集合の関係になります。
つまり、
Not(Whileの条件) = Untilの条件
Whileの条件 = Not(Untilの条件)
このような関係になります。
マクロ実行後
使用例・Do~Loopのネスト(入れ子)
縦10行、横10列に1を入れる場合です。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Sample3() Dim i, j i = 1 Do Until i > 10 j = 1 Do Until j > 10 Cells(i, j) = 1 j = j + 1 Loop i = i + 1 Loop End Sub |
マクロ実行後
参照文献:https://excel-ubara.com/excelvba1/EXCELVBA317.html
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>