VBAとは、MicrosoftのExcelなどのアプリケーションに機能拡張をするためのマクロ言語。
Visual Basicがベースとなっているプログラミング言語で、Excelで手作業で行っていたものを自動で行いたい場合など、結構活躍してくれる。
今回は、よく使うVBAのループ(繰り返し)処理をまとめてみた。
ループする回数が決まっている場合(For ~ Next)
10回ループさせる例。
10セル分の値を加算し、合計を算出している。
Dim i As Integer Dim sum As Integer sum = 0 For i = 1 To 10 sum = sum + Cells(i, 1) Next i MsgBox sum
増減値2で10回ループさせる例。
1つ飛ばしで、10セル分の値を加算し、合計を算出している。
Dim i As Integer Dim sum As Integer sum = 0 For i = 1 To 10 Step 2 sum = sum + Cells(i, 1) Next i MsgBox sum
オブジェクトをループさせる場合(For Each In ~ Next)
ワークブックオブジェクトのワークシートをループさせる例。
ワークブックの全てのワークシート名を連結させ、表示している。
Dim wkBook As Workbook Dim wkSheet As Worksheet Dim sheetName As String sheetName = "" Set wkBook = Application.ThisWorkbook For Each wkSheet In wkBook.Sheets sheetName = sheetName & wkSheet.Name Next wkSheet MsgBox sheetName
条件が満たされる間ループさせる場合(Do While ~ Loop)
セルの値が入っている場合に加算していく例。
セルの値が入っているものを加算し、合計を算出している。
Dim i As Integer Dim sum As Integer i = 1 sum = 0 Do While Cells(i, 1) <> "" sum = sum + Cells(i, 1) i = i + 1 Loop MsgBox sum
条件が満たされるまでループさせる場合(Do Until ~ Loop)
セルの値が「EOF(End Of File:ファイルの終端)」の行まで加算していく例。
「EOF」までのセルの値を加算し、合計を算出している。
Dim i As Integer Dim sum As Integer i = 1 sum = 0 Do Until Cells(i, 1) = "EOF" sum = sum + Cells(i, 1) i = i + 1 Loop MsgBox sum
ループを抜ける場合
ある条件になった時にループ処理を抜けたい場合は、「Exit」文を使用し、以下のようにする。
「For ~ Next」の場合
ループカウンタが5になった場合にループを抜ける例。
「Exit For」でループ処理を抜ける。
Dim i As Integer Dim sum As Integer sum = 0 For i = 1 To 10 If i = 5 Then Exit For End If sum = sum + Cells(i, 1) Next i MsgBox sum
「Do ~ Loop」の場合
ループカウンタが5になった場合にループを抜ける例。
「Exit Do」でループ処理を抜ける。
Dim i As Integer Dim sum As Integer i = 1 sum = 0 Do While Cells(i, 1) <> "" If i = 5 Then Exit Do End If sum = sum + Cells(i, 1) i = i + 1 Loop MsgBox sum
ちなみに、サブプロシージャを抜ける「Exit Sub」、ファンクションプロシージャを抜ける「Exit Function」もよく使用します。
以上。
コメント