はじめに
VBAを使って「繰り返し」をするための構文を紹介しています。
「繰り返し」を利用すると 「1つずつ繰り返しの処理をしてすべてを処理する」ことができるようになります。
よく使われるものを紹介させていただきます
For ~Next構文とは
繰り返し同じ処理を行うための構文です。
指定した回数だけ特定の処理を繰り返すことができます。
★1から5までの数字をメッセージボックスで表示する
Sub example_1()
Dim i As long
For i = 1 To 5
MsgBox i
Next i
End Sub
☆出力結果
★1から10までの数字を2倍にしてDebug.Printで表示する
Sub example_2()
Dim i As Long
Dim result As Long
For i = 1 To 10
result = i * 2
Debug.Print result
Next i
End Sub
☆出力結果
二重ループとは
二重ループとは、ループの中にもう一つのループがある構造のことです。
行と列の合計を出す方法で説明します
★下記の表を使って、縦(教科ごと)の合計と横(名前ごと)の合計を計算する
Sub 合計を計算する()
Dim i As long, j As long
Dim 行の合計 As long, 列の合計 As long
' 行の合計を計算して「計」列に入力
For i = 2 To 4 ' 名前の行
行の合計 = 0
For j = 2 To 6 ' 科目の列
行の合計 = 行の合計 + Cells(i, j).Value
Next j
Cells(i, 7).Value = 行の合計 ' 「計」列に合計を入力
Next i
' 列の合計を計算して最下行に入力
For j = 2 To 6 ' 科目の列
列の合計 = 0
For i = 2 To 4 ' 名前の行
列の合計 = 列の合計 + Cells(i, j).Value
Next i
Cells(5, j).Value = 列の合計 ' 最下行に合計を入力
Next j
End Sub
☆出力結果
For ~Next Step とは
うしろにStepをつけると 〇つ飛ばし のような処理もできます
★1から20まで4ずつ増加し、その値をDebug.Printで表示する
Sub Example4()
Dim i As Long
For i = 1 To 20 Step 4
Debug.Print i
Next i
End Sub
☆出力結果
★下記のような表があるとき 1行飛ばしで G列に 「計」 を出します
Sub Example5()
Dim i As Long
For i = 2 To 10 Step 2
Cells(i, "G").Value = WorksheetFunction.Sum(Range(Cells(i, "B"), Cells(i, "F")))
Next i
End Sub
☆出力結果
★For~Next構文を使って上のシートの9行目から3行目まで、1行飛ばしで行を削除する
Sub Example5()
Dim i As Long
For i = 9 To 3 Step -2
Rows(i).Delete
Next i
End Sub
☆出力結果
まとめ
VBAで繰り返しを記述するための構文には「For ~Next 、二重ループ、For ~Next Step」などありますが どれも大切な構文なので 使い方の違いを理解するのにお役に立てばうれしいです
コメント