【Excel VBA】For ~Next 構文の使い方

VBA

はじめに

 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」などありますが どれも大切な構文なので 使い方の違いを理解するのにお役に立てばうれしいです

コメント

タイトルとURLをコピーしました