Excel VBA入門:Sub・変数・If・Forで最初のマクロを作る

マクロの始め方から、セル操作・条件分岐・繰り返し処理まで、事務作業を題材に順番に解説します。

広告 / CONTENTS SUPPORT広告サービス設定後にここへ表示されます

VBAは、Excelで繰り返す作業を自動化するためのプログラミング言語です。最初から複雑なマクロを作るのではなく、「見出しを書く」「金額を判定する」「行ごとに処理する」という小さな動きを順番に組み合わせます。

VISUAL GUIDE

VBAマクロの処理の流れ

01Subで開始
02対象シート・セルを指定
03IfやForで処理
04結果を確認して終了

VBAでは、処理の対象を明示してから、条件分岐や繰り返しを追加します。対象シートを省略せずに書くと、意図しないシートを変更しにくくなります。

1. マクロを保存できる準備をする

VBAを使うブックは、通常のxlsxではなく、マクロ有効ブック(xlsm)として保存します。開発タブが表示されていない場合は、Excelのオプションからリボンの表示を確認します。

マクロはブックの内容を変更できます。インターネットから入手したファイルや、出所が分からないファイルのマクロは実行しないでください。最初は新しい練習用ブックと架空データで試します。

  • 練習用の新規ブックを作る
  • xlsm形式で保存する
  • 開発タブからVisual Basicを開く
  • 信頼できるファイルだけで実行する

2. SubとEnd Subで処理の範囲を作る

VBAの処理は、Subから始まり、End Subで終わります。Subの後ろにマクロ名を書き、実行したい命令をその間に置きます。先頭の「'」から始まる行はコメントとして扱われ、処理されません。

セルに見出しを書く最小マクロExcel / VBA
Option Explicit

Sub WriteHeader()
    ThisWorkbook.Worksheets("売上").Range("A1").Value = "確認済み"
End Sub

ポイント:「売上」という名前のシートがない場合はエラーになります。先にシート名を確認するか、練習用ブックに同じ名前のシートを作ってください。

3. 変数でシートや行番号を覚える

同じシートや行番号を何度も使うときは、変数に入れるとコードを読みやすくできます。Dimで変数を宣言し、SetでWorksheetオブジェクトを代入します。行数を扱う変数にはLongを使うのが基本です。

シートと最終行を取得Excel / VBA
Dim ws As Worksheet
Dim lastRow As Long

Set ws = ThisWorkbook.Worksheets("売上")
lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row

4. Ifで条件に応じてセルを変える

Ifは、条件が成立したときだけ処理を行う構文です。売上金額が10,000以上ならE列に「確認」、それ以外なら「通常」と入力する例を見てみます。

金額を判定するExcel / VBA
If ws.Cells(row, "D").Value >= 10000 Then
    ws.Cells(row, "E").Value = "確認"
Else
    ws.Cells(row, "E").Value = "通常"
End If

5. Forで表の最終行まで繰り返す

表の2行目から最終行まで同じ処理を繰り返すときは、ForとNextを使います。次のマクロは、売上シートのD列を確認してE列に判定結果を入力します。1行ずつ動きを確認できるため、初心者の練習題材に向いています。

売上金額を一括判定する完成例Excel / VBA
Option Explicit

Sub MarkSales()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim row As Long

    Set ws = ThisWorkbook.Worksheets("売上")
    lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row

    For row = 2 To lastRow
        If ws.Cells(row, "D").Value >= 10000 Then
            ws.Cells(row, "E").Value = "確認"
        Else
            ws.Cells(row, "E").Value = "通常"
        End If
    Next row
End Sub
内容
A列日付2026/07/30
B列担当山田
D列売上金額12000
E列マクロが入力確認

6. 実行後は結果と変更範囲を確認する

マクロを実行したら、想定した行だけが変更されたか、空白行や見出し行を処理していないかを確認します。初回はデータを複製してから実行し、意図しない結果が出た場合に元へ戻せる状態を作ります。

処理を追加するときは、一度に複数の機能を変えず、見出し入力、最終行取得、判定処理のように一つずつ確認します。エラーが出た行番号とメッセージを記録しておくと、修正箇所を絞りやすくなります。

  • 実行前にブックを複製する
  • 対象シート名と対象列を確認する
  • 空白行・見出し行の扱いを決める
  • 小さな変更ごとに実行結果を確認する
IN SHORT

VBAの最初の一歩は、短いマクロを動かして仕組みを理解することです。Subで範囲を作り、変数で対象を覚え、IfとForで表を処理する。この順番なら、事務作業の自動化へ少しずつ広げられます。

広告 / CONTENTS SUPPORT広告サービス設定後にここへ表示されます