【Excel自動化で必須!】VBAのIF文(条件分岐)とは?VBAのループ処理とは?

VBA & Macro

VBAのループ(繰り返し処理)は、特定の処理を何回も実行したいときに使う仕組み。例えば、「100行のデータを1つずつチェックしたい」「条件を満たすまで繰り返したい」なんてときに便利!

ループの種類と使い方

①For ~ Next(決まった回数繰り返す)

  • 例:1から10までメッセージを表示する
    Sub ForLoopSample()
    Dim i As Integer
    For i = 1 To 10
    MsgBox "現在のカウント:" & i
    Next i
    End Sub
  • ポイント
  • For i = 1 To 10 → i が 1 から 10 まで増えながら繰り返す
  • Next i で次のループへ

②For Each ~ Next(コレクションを1つずつ処理)

  • 例:シートの名前を全部表示する
    Sub ForEachSample()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
    MsgBox "シート名:" & ws.Name
    Next ws
    End Sub
  • ポイント
  • For Each 変数 In コレクション で、1つずつ取り出して処理
  • 使いどころ → シートやセル範囲など「まとまったものを順番に処理する」

③Do While ~ Loop(条件を満たす間、繰り返す)

  • 例:セルの値が空白じゃない間、下に移動しながらメッセージを表示
    Sub DoWhileSample()
    Dim rng As Range
    Set rng = Range("A1")
    Do While rng.Value <> ""
    MsgBox "セルA" & rng.Row & "の値:" & rng.Value
    Set rng = rng.Offset(1, 0) ' 下のセルへ移動
    Loop
    End Sub
  • ポイント
  • Do While 条件 → 条件を満たす間、ループする
  • 使いどころ → 「空白になるまで繰り返す」みたいなとき

④Do Until ~ Loop(条件を満たすまで繰り返す)

  • 例:セルA1の値が「終了」になるまで繰り返す
    Sub DoUntilSample()
      Dim rng As Range
      Set rng = Range("A1")
      Do Until rng.Value = "終了"
        MsgBox "セルの値:" & rng.Value
        Set rng = rng.Offset(1, 0) ' 下のセルへ移動
      Loop
    End Sub
  • ポイント
  • Do Until 条件 → 条件を満たす まで 繰り返す
  • Do While との違い → While は「条件が True の間」、Until は「条件が False の間」

⑤While ~ Wend(シンプルな繰り返し)

  • 例:セルA1が空白になるまでメッセージ表示
    Sub WhileWendSample()
      Dim i As Integer
      i = 1
      While Cells(i, 1).Value <> ""
         MsgBox "セルA" & i & "の値:" & Cells(i, 1).Value
         i = i + 1
      Wend
    End Sub
  • ポイント
  • While 条件 → 条件がTrueなら繰り返し
  • ただし Do While の方が柔軟なので、こっちはあまり使われない

ループの中断 & スキップ

①Exit For(Forループを強制終了)
For i = 1 To 10
  If i = 5 Then Exit For ' 5になったら終了
  MsgBox i
Next i

②Exit Do(Doループを強制終了)
Do While True
  If Range("A1").Value = "終了" Then Exit Do ' A1が「終了」なら抜ける
Loop

③Continue(特定の条件でスキップ)

VBAには Continue はないけど、GoTo を使えば似たことができる
For i = 1 To 10
  If i Mod 2 = 0 Then GoTo SkipLoop ' 偶数ならスキップ
  MsgBox i
SkipLoop:
Next i

まとめ

ループの種類は使い分けが大事!


当サイトでは、Excelにまつわる役立つ情報をまとめています!

Excel関数はデータを分析する際や、自動計算による効率化など仕事で使える場面が非常に多いです。
①大量データの中から間違っているものを見つけたい
②大量データの中から特定のものを見つけたい
③決まった計算式で大量のデータの計算をしたい
④決まった条件で判定させたい
⑤応用:一部の入力で分かりやすい表(分析資料・請求書・シフトなど)を作りたい
使いこなすことで職場でも重宝されること間違いなし!

また、初めてプログラムを作りたいと思ったときPGM言語を勉強するのはハードルが高いですが、
マクロ(VBA)はPGM言語と違って、視覚的に分かりやすく、使いやすいので取っ掛かりとして一番おすすめです!
内容が理解できるようになれば、やりたいことは他の言語と変わらないので論理的思考が身につきます♪

使ったことのある関数・VBAでも、いざ使うとなったときに「なんだっけ?」と思う時に検索して探せるようにまとめています。
ぜひ活用して下さい!

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