EXCEL VBA 繰り返し処理の使い分け(For Next・Do While Loop・Do Until Loop・Do Loop While)
EXCEL VBA 繰り返し処理の使い分け(For Next・Do While Loop・Do Until Loop・Do Loop While)
また、過去にもFor Next・Do Loop Whileなどの説明ページもありますので、参照して下さい。
EXCEL VBA For Next Stepの説明(ループ処理:前判定)
※For Next Stepは、他のループステートメントと比べても、分かり易くかつStepを利用する事で、自在に加算・増減する数値を設定する事ができます。
For Next のStep(ステップ)の使い方 | |
---|---|
1ずつ加算 | For I = 1 to 10 [ 何も設定しない] |
2ずつ加算 | For I = 2 to 10 Step 2 |
-1ずつ減算 | For I = 10 to 1 Step -1 |
-2ずつ減算 | For I = 10 to 0 Step -2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub for_next01() Dim I As Long Cells.Clear 'シートを全て消去(クリアー) For I = 1 To 12 'Iの値が1~12まで繰り返します。 Range("A" & I) = I & "月" 'A列のセルに1月~12月まで1行ずつ下げながら転記します。 Next I End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub for_next02() Dim I As Long Cells.Clear 'シートを全て消去(クリアー) For I = 2 To 12 Step 2 'Iの値が2~12まで+2増分しながら繰り返します。 Range("A" & I / 2) = I & "月" 'A列のセルに偶数月を1行ずつ下げながら転記します。 Next I End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Sub for_next03() Dim I, F As Long Cells.Clear 'シートを全て消去(クリアー) F = 1 '1行目をセット For I = 10 To 1 Step -1 'Iの値が10~1まで-1減らしながら繰り返します。 Range("A" & F) = I & "階" 'A列のセルに階数を1行ずつ下げながら転記します。 F = F + 1 '行数を+1ずつ加算する。 Next I End Sub |
(画面クリックして拡大)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub for_next04() Dim I, L, C As Long Cells.Clear 'シートを全て消去(クリアー) C = 0 '背景色0番をセット For I = 1 To 10 'Iの値が1~10まで繰り返します。 For L = 1 To 5 With Cells(I, L) 'Cells I:行 L:列 .Value = C '背景色の番号を文字列で転記 .Interior.ColorIndex = C '背景色をセルにセット End With C = C + 1 '背景色に対して1を加算する。 Next L Next I End Sub |
(画面クリックして拡大)
EXCEL VBA Do While Loopの説明(ループ処理:前判定)
【注意】
For Next以外のループ処理は、条件式に該当するまで永久に繰り返しますので、変数などを加算するなど条件に一致するように変化させる必要があります。
例: Do While I > 10
I = I + 1 ‘Iが10を超えるまで加算する。
Loop
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Do_While_Loop01() Dim I As Long Cells.Clear 'シートを全て消去(クリアー) I = 1 '初期値Iに1をセット Do While I <= 12 'Iの値が12以下まで繰り返します。 Range("A" & I) = I & "月" 'A列のセルに1月~12月まで1行ずつ下げながら転記します。 I = I + 1 '条件式のIの値が12を超えるまで加算します。 Loop End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Do_While_Loop02() Dim I As Long Cells.Clear 'シートを全て消去(クリアー) I = 2 '初期値Iに2をセット Do While I <= 12 'Iの値が12以下まで繰り返します。 Range("A" & I / 2) = I & "月" 'A列のセルに偶数月を1行ずつ下げながら転記します。 I = I + 2 Loop End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Do_While_Loop03() Dim I, F As Long Cells.Clear 'シートを全て消去(クリアー) F = 1 '1行目をセット I = 10 '10階・階数をセット Do While I >= 1 'Iの値が1以上は繰り返す。 Range("A" & F) = I & "階" 'A列のセルに階数を1行ずつ下げながら転記します。 F = F + 1 '行数を+1ずつ加算する。 I = I - 1 '階数を-1にして階数を減らす Loop End Sub |
(画面クリックして拡大)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Sub Do_While_Loop04() Dim I, L, C As Long Cells.Clear 'シートを全て消去(クリアー) C = 0 '背景色0番をセット I = 1 Do While I <= 10 'Iの値が10以下まで繰り返します。。 L = 1 Do While L <= 5 'Lの値が5以下まで繰り返します。。 With Cells(I, L) 'Cells I:行 L:列 .Value = C '背景色の番号を文字列で転記 .Interior.ColorIndex = C '背景色をセルにセット End With C = C + 1 '背景色に対して1を加算する。 L = L + 1 'Lの値を加算します。Lは列 Loop I = I + 1 'Iの値を加算します。Iは行 Loop End Sub |
(画面クリックして拡大)
EXCEL VBA Do Until Loopの説明(ループ処理:前判定)
【注意】
For Next以外のループ処理は、条件式に該当するまで永久に繰り返しますので、変数などを加算するなど条件に一致するように変化させる必要があります。
例: Do Until I > 10
I = I + 1 ‘Iが10を超えるまで加算する。
Loop
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Do_Until_Loop01() Dim I As Long Cells.Clear 'シートを全て消去(クリアー) I = 1 '初期値Iに1をセット Do Until I > 12 'Iの値が12を超えるまで繰り返します。 Range("A" & I) = I & "月" 'A列のセルに1月~12月まで1行ずつ下げながら転記します。 I = I + 1 '条件式のIの値が12を超えるまで加算します。 Loop End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Do_Until_Loop02() Dim I As Long Cells.Clear 'シートを全て消去(クリアー) I = 2 '初期値Iに2をセット Do Until I > 12 'Iの値が12を超えるまで繰り返します。 Range("A" & I / 2) = I & "月" 'A列のセルに偶数月を1行ずつ下げながら転記します。 I = I + 2 Loop End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Do_Until_Loop03() Dim I, F As Long Cells.Clear 'シートを全て消去(クリアー) F = 1 '1行目をセット I = 10 '10階・階数をセット Do Until I < 1 'Iの値が1未満になるまで繰り返す。 Range("A" & F) = I & "階" 'A列のセルに階数を1行ずつ下げながら転記します。 F = F + 1 '行数を+1ずつ加算する。 I = I - 1 '階数を-1にして階数を減らす Loop End Sub |
(画面クリックして拡大)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Sub Do_Until_Loop04() Dim I, L, C As Long Cells.Clear 'シートを全て消去(クリアー) C = 0 '背景色0番をセット I = 1 Do Until I > 10 'Iの値が10を超えるまで繰り返します。。 L = 1 Do Until L > 5 'Lの値が5を超えるまで繰り返します。。 With Cells(I, L) 'Cells I:行 L:列 .Value = C '背景色の番号を文字列で転記 .Interior.ColorIndex = C '背景色をセルにセット End With C = C + 1 '背景色に対して1を加算する。 L = L + 1 'Lの値を加算します。Lは列 Loop I = I + 1 'Iの値を加算します。Iは行 Loop End Sub |
(画面クリックして拡大)
EXCEL VBA Do Until Loopの説明(ループ処理:後判定)
【注意】
For Next以外のループ処理は、条件式に該当するまで永久に繰り返しますので、変数などを加算するなど条件に一致するように変化させる必要があります。
例: Do
I = I + 1 ‘Iが10を超えるまで加算する。
Loop Until I > 10
※終わり判定でループ処理を実行しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub Do_Loop_While01() Dim I As Long Cells.Clear 'シートを全て消去(クリアー) I = 0 '初期値Iに0をセット Do I = I + 1 '条件式のIを加算します。 Range("A" & I) = I & "月" 'A列のセルに1月~12月まで1行ずつ下げながら転記します。 Loop While I < 12 'Iの値が12未満まで繰り返します。 End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Do_Loop_While02() Dim I As Long I = 0 '初期値Iに0をセット Do I = I + 1 '条件式のIの値を加算します。 Range("B" & I) = Range("A" & I) Loop While Range("A" & I) <> "" 'A列の文字列が無くなるまで繰り返します。 End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Do_Loop_While03() Dim I, E As Long I = 0 '初期値Iに0をセット E = InputBox("何行目まで転記しますか?") Do I = I + 1 '条件式のIの値を加算します。 Range("B" & I) = Range("A" & I) Loop While E > I '入力した数値を超えるまで繰り返します。 End Sub |
(画面クリックして拡大)
EXCEL VBA Do While Loopの説明(ループ処理:後判定)
【注意】
For Next以外のループ処理は、条件式に該当するまで永久に繰り返しますので、変数などを加算するなど条件に一致するように変化させる必要があります。
例: Do
I = I + 1 ‘Iが10を超えるまで加算する。
Loop While I > 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Do_Loop_While01() Dim I As Long Cells.Clear 'シートを全て消去(クリアー) I = 0 '初期値Iに0をセット Do I = I + 1 '条件式のIを加算します。 Range("A" & I) = I & "月" 'A列のセルに1月~12月まで1行ずつ下げながら転記します。 Loop While I < 12 'Iの値が12未満まで繰り返します。 End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Do_Loop_While02() Dim I As Long I = 0 '初期値Iに0をセット Do I = I + 1 '条件式のIの値を加算します。 Range("B" & I) = Range("A" & I) Loop While Range("A" & I) <> "" 'A列の文字列が無くなるまで繰り返します。 End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Do_Loop_While03() Dim I, E As Long I = 0 '初期値Iに0をセット E = InputBox("何行目まで転記しますか?") Do I = I + 1 '条件式のIの値を加算します。 Range("B" & I) = Range("A" & I) Loop While E > I '入力した数値を超えるまで繰り返します。 End Sub |
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。