カテゴリ: Excel VBA 更新日: 2026/02/01

Excel VBAの基本文法を完全攻略!変数・条件分岐・ループを初心者向けに徹底解説

Excel VBAの基本文法を総まとめ!初心者が最初に習得すべき書き方とは?
Excel VBAの基本文法を総まとめ!初心者が最初に習得すべき書き方とは?

先生と生徒の会話形式で理解しよう

生徒

「エクセルマクロの勉強を始めたのですが、英語の呪文みたいなのがたくさん出てきて、どこから手を付ければいいか分かりません…。」

先生

「大丈夫ですよ。VBAには『三大基本文法』というものがあります。それは、データを入れる『変数』、分かれ道を作る『条件分岐』、そして同じことを繰り返す『ループ』です。」

生徒

「その3つさえ覚えれば、マクロが作れるようになるんですか?」

先生

「はい!この3つはプログラムの土台です。料理でいえば、包丁の使い方、火加減、味付けを覚えるようなものですね。それでは詳しく解説していきます!」

1. データの入れ物「変数」の基本と使い方

1. データの入れ物「変数」の基本と使い方
1. データの入れ物「変数」の基本と使い方

プログラミングの世界では、数字や文字などのデータを一時的に保管しておく「箱」のようなものを使います。この箱のことを変数(へんすう)と呼びます。

なぜ箱が必要なのでしょうか?例えば、計算の途中の数字を覚えておいたり、何度も使う長い名前を短い名前で使い回したりするためです。VBAで変数を使うときは、「今から箱を使いますよ!」という宣言をするのがルールです。


Sub VariableExample()
    ' Dim(ディム)は変数の宣言。「箱を用意する」という意味です
    Dim userName As String
    Dim userAge As Integer
    
    ' 箱の中にデータを入れる(代入といいます)
    userName = "田中太郎"
    userAge = 25
    
    ' メッセージボックスで表示する
    MsgBox userName & "さんの年齢は" & userAge & "歳です。"
End Sub

ここで出てきた String(ストリング)は「文字列」、Integer(インテジャー)は「整数」という意味の型(かた)です。箱の種類を指定することで、間違えて数字の箱に文字を入れようとしたときに、エクセルが教えてくれるようになります。

2. もしも〜だったら?を叶える「If文」による条件分岐

2. もしも〜だったら?を叶える「If文」による条件分岐
2. もしも〜だったら?を叶える「If文」による条件分岐

次に覚えるのは、状況に合わせて動きを変える方法です。これを条件分岐(じょうけんぶんき)といいます。VBAでは If(イフ)文を使います。

例えば、「点数が80点以上なら合格、そうでなければ不合格」という処理を考えてみましょう。


Sub IfExample()
    Dim score As Integer
    score = 85
    
    ' もしスコアが80以上なら
    If score >= 80 Then
        MsgBox "おめでとう!合格です。"
    ' そうでなければ
    Else
        MsgBox "残念、不合格です。次は頑張りましょう。"
    End If
End Sub

Then は「その時」、Else は「それ以外」という意味です。最後に必ず End If と書いて、「ここで条件分岐はおわりです」と伝えてあげるのがポイントです。

3. 繰り返し作業を自動化する「For Next」ループ

3. 繰り返し作業を自動化する「For Next」ループ
3. 繰り返し作業を自動化する「For Next」ループ

エクセルマクロの真骨頂は、何百回、何千回という同じ作業を一瞬で終わらせることです。この繰り返しの仕組みをループといいます。

代表的なのが For Next(フォー・ネクスト)文です。指定した回数だけ、中の処理をぐるぐる回します。


Sub ForNextExample()
    Dim i As Integer
    
    ' 1から5まで繰り返す
    For i = 1 To 5
        ' セルのi行目、1列目に文字を入れる
        Cells(i, 1).Value = i & "行目の処理完了"
    Next i
End Sub

この i はカウンターのような役割をします。1回目は1、2回目は2…と増えていき、5まで終わるとループを抜けます。100回繰り返したいなら 1 To 100 と変えるだけ。手作業では何分もかかることが、1秒もかからずに終わります。

4. 特定の条件まで繰り返す「Do Loop」文

4. 特定の条件まで繰り返す「Do Loop」文
4. 特定の条件まで繰り返す「Do Loop」文

「何回繰り返すか決まっていないけれど、空白のセルが出てくるまで続けたい」という時に便利なのが、Do Loop(ドゥー・ループ)文です。

条件が満たされている間(または満たされるまで)、ずっと処理を続けます。


Sub DoLoopExample()
    Dim i As Integer
    i = 1
    
    ' セルが空白("")ではない間、ずっと繰り返す
    Do While Cells(i, 1).Value <> ""
        ' 文字を赤色にする
        Cells(i, 1).Font.Color = vbRed
        ' 次の行へ行くためにiを増やす
        i = i + 1
    Loop
End Sub

While(ホワイル)は「〜の間ずっと」という意味です。注意点は、i = i + 1 のように、条件を終わらせるための記述を忘れないことです。これを忘れると「無限ループ」といって、エクセルが止まらなくなってしまうので気をつけましょう。

5. 比較演算子と論理演算子を使いこなそう

5. 比較演算子と論理演算子を使いこなそう
5. 比較演算子と論理演算子を使いこなそう

条件分岐やループを使うときに欠かせないのが、大きさを比べたり、複数の条件を組み合わせたりする記号です。

比較演算子

  • = (等しい)
  • <> (等しくない)
  • > (より大きい)
  • < (より小さい)
  • >= (以上)
  • <= (以下)

論理演算子

  • And (かつ:両方満たす)
  • Or (または:どちらか満たす)
  • Not (〜ではない)

これらを組み合わせることで、「年齢が20歳以上、かつ、性別が女性」といった複雑な条件も作れるようになります。

6. インデント(字下げ)で読みやすいコードを書く

6. インデント(字下げ)で読みやすいコードを書く
6. インデント(字下げ)で読みやすいコードを書く

プログラムは、コンピューターが動けばいいだけでなく、人間が読んで理解しやすいことも非常に大切です。そこで使われるのがインデント(字下げ)です。

IfFor の中身をキーボードの「Tab(タブ)」キーで一段下げることで、どこからどこまでがループや条件の範囲なのかがパッと見て分かるようになります。


' 見にくいコード(字下げなし)
Sub BadExample()
If Range("A1").Value = "OK" Then
MsgBox "完了です"
End If
End Sub

' 読みやすいコード(字下げあり)
Sub GoodExample()
    If Range("A1").Value = "OK" Then
        MsgBox "完了です"
    End If
End Sub

プログラミング未経験の方は後回しにしがちですが、実はこれが一番の上達のコツです。コードがきれいに整理されていると、ミス(バグ)にも気づきやすくなりますよ。

7. 実践練習:変数・条件分岐・ループの組み合わせ

7. 実践練習:変数・条件分岐・ループの組み合わせ
7. 実践練習:変数・条件分岐・ループの組み合わせ

最後に、今回学んだ3つの文法をすべて使ったプログラムを作ってみましょう。A列にある1行目から10行目までの数字を確認し、50点以上ならB列に「合格」、それ以外なら「不合格」と書き込み、最後に合計点を計算するマクロです。


Sub TotalPractice()
    Dim i As Integer
    Dim totalScore As Integer
    totalScore = 0
    
    ' ループ開始
    For i = 1 To 10
        ' もしセルが50以上なら(条件分岐)
        If Cells(i, 1).Value >= 50 Then
            Cells(i, 2).Value = "合格"
        Else
            Cells(i, 2).Value = "不合格"
        End If
        
        ' スコアを足していく(変数の活用)
        totalScore = totalScore + Cells(i, 1).Value
    Next i
    
    MsgBox "10名分の集計が終わりました。合計点は " & totalScore & " 点です。"
End Sub

いかがでしょうか。たったこれだけのコードで、何人分のデータであっても一瞬で判定して集計できるようになります。これがエクセルVBAの魔法です。

8. エラーを恐れずにたくさん書くことが上達の近道

8. エラーを恐れずにたくさん書くことが上達の近道
8. エラーを恐れずにたくさん書くことが上達の近道

プログラムを動かそうとして、赤い文字でエラーメッセージが出てくると、びっくりして「壊してしまったかも!」と不安になるかもしれません。でも安心してください。パソコンが壊れることは絶対にありません。

エラーは「書き方が少し違うよ」というエクセルからのアドバイスです。まずは、今回紹介したコードをそのまま書き写して(写経といいます)動かしてみることから始めましょう。自分で文字を変えてみたり、回数を変えてみたりして、どう動くか試すことで知識が定着します。

変数の箱を用意し、Ifで分かれ道を作り、ForやDoで繰り返す。この基本のリズムさえ掴んでしまえば、どんなに複雑に見えるマクロも読み解けるようになります。

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
New2
Office Scripts
Office Scripts普及の歴史とMicrosoftの方向性!Excel自動化が進化してきた流れをやさしく解説
New3
Excel VBA
Excel VBA関数を用途別に作成!計算・文字列処理の基本を初心者向けに解説
New4
Office Scripts
Office Scriptsで条件付き書式を自動化!数値変化に応じてExcelの書式を自動更新する方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excelマクロのセキュリティ設定の基本!安全に実行するための信頼センター設定まとめ
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsでできること・できないことを完全整理!Excel自動化の基本と限界をやさしく解説
No.3
Java&Spring記事人気No3
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.4
Java&Spring記事人気No4
Excel VBA
Excel VBAとOffice Scriptsの違いを比較!初心者でもわかる学ぶべきスキル
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBA基本文法の総まとめ!初心者が必ず押さえるべき20の基礎ポイント完全ガイド
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsで条件付き書式を自動化!Excel自動化初心者向けスクリプト操作の基本
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法