VBAの3つの基本構造とは|順次・分岐(If〜Then)・繰り返し(For〜Next)の使い方

VBAを使い始めたとき、「なんとなく書いているけど意味がよくわからない」「エラーが出てしまう」という壁にぶつかる方は多いです。その原因の多くは、プログラムの基本構造が整理できていないことにあります。

VBAのすべての処理は「順次・分岐・繰り返し」の3つで成り立っています。この記事ではそれぞれの役割をコード例で解説し、最後に3つを組み合わせた実務例も紹介します。

順次処理とは?

順次処理とは、コードを上から順番に1行ずつ実行する基本の動きです。特別な構文はなく、書いた順に処理されます。

Sub 順次処理の例()
    Range("A1").Value = "処理1"
    Range("A2").Value = "処理2"
    Range("A3").Value = "処理3"
End Sub

A1→A2→A3の順に書き込まれます。すべてのプログラムはこの「上から順に実行する」という原則から始まります。

分岐処理(If〜Then)を使うには?

分岐処理とは、条件によって実行する処理を変える仕組みです。代表的な構文が If〜Then〜Else です。

Sub 分岐処理の例()
    Dim 点数 As Integer

    点数 = Range("B1").Value

    If 点数 >= 80 Then
        Range("C1").Value = "合格"
    Else
        Range("C1").Value = "不合格"
    End If
End Sub

「点数が80以上なら合格、そうでなければ不合格」という判定を自動で行います。業務では「金額が〇〇円以上なら値引き」「在庫がなければ発注」などの条件判断によく使われます。

繰り返し処理(For〜Next)を使うには?

繰り返し処理とは、同じ処理を指定した回数だけ自動で繰り返す仕組みです。代表的な構文が For〜Next です。

Sub 繰り返し処理の例()
    Dim i As Integer

    For i = 1 To 10
        Cells(i, 1).Value = i
    Next i
End Sub

A1〜A10に「1〜10」の数字が書き込まれます。データの自動入力・連番の生成・一覧の一括処理など、繰り返しを使う場面は非常に多いです。

3つの構造を組み合わせた実務例とは?

実際の業務では、順次・分岐・繰り返しを組み合わせて使います。次の例は「名前と点数のリストを読み取り、点数に応じて合否をC列に記入する」処理です。

Sub 基本構造の応用例()
    Dim i As Long
    Dim 点数 As Long
    Dim 最終行 As Long

    ' A列(名前)の最終行を取得(順次)
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row

    ' 2行目から最終行までループ(繰り返し)
    For i = 2 To 最終行

        点数 = Cells(i, 2).Value

        ' 点数で合否を判定(分岐)
        If 点数 >= 80 Then
            Cells(i, 3).Value = "合格"
        Else
            Cells(i, 3).Value = "不合格"
        End If

    Next i
End Sub

「一覧表に対してループ処理をかけ、条件によって結果を変える」という構成です。この組み合わせができるようになると、VBAの実務活用がぐっと広がります。

まとめ

  • 順次処理:コードを上から順に1行ずつ実行する。すべての基本
  • 分岐処理If〜Then〜Else):条件によって実行する処理を変える
  • 繰り返し処理For〜Next):同じ処理を指定した回数だけ自動で繰り返す
  • 実務では3つを組み合わせるのが基本。「ループ+条件判定」が最頻出パターン
  • この3構造を理解すると、マクロの設計力と読解力が大きく上がる

よくある質問

順次・分岐・繰り返しの3つだけでマクロは作れますか?

基本的な業務マクロのほとんどはこの3つの組み合わせで作れます。変数や関数など他の要素もありますが、まずこの3構造を理解することが実践の土台になります。

If〜ThenとSelect Caseはどう使い分けますか?

条件が2〜3パターンなら If〜Then〜Else、4パターン以上になる場合や同じ変数で多くの値を比較するときは Select Case の方がコードをすっきり書けます。

For〜Next以外の繰り返し構文はありますか?

あります。Do While〜Loop(条件が真の間繰り返す)や For Each〜Next(コレクションの各要素に対して繰り返す)もよく使われます。繰り返す回数が決まっているなら For〜Next、条件次第で回数が変わるなら Do While が適しています。

繰り返しの中に分岐を入れてもいいですか?

はい、むしろそれが実務での典型的な使い方です。For〜Next の中に If〜Then を入れて「各行の値を条件で判定しながら処理する」というパターンが最もよく使われます。

最終行を取得する Cells(Rows.Count, 1).End(xlUp).Row とは何ですか?

A列の一番下のセルから上方向に向かって、データが入っている最後のセルの行番号を取得する書き方です。データ件数が変わっても自動的に最終行を取得できるため、繰り返し処理の終端としてよく使われます。


動画で学びたい方へ

「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。

VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール