VBAは、Excelで繰り返す作業を自動化するためのプログラミング言語です。最初から複雑なマクロを作るのではなく、「見出しを書く」「金額を判定する」「行ごとに処理する」という小さな動きを順番に組み合わせます。
VISUAL GUIDE
VBAマクロの処理の流れ
VBAでは、処理の対象を明示してから、条件分岐や繰り返しを追加します。対象シートを省略せずに書くと、意図しないシートを変更しにくくなります。
1. マクロを保存できる準備をする
VBAを使うブックは、通常のxlsxではなく、マクロ有効ブック(xlsm)として保存します。開発タブが表示されていない場合は、Excelのオプションからリボンの表示を確認します。
マクロはブックの内容を変更できます。インターネットから入手したファイルや、出所が分からないファイルのマクロは実行しないでください。最初は新しい練習用ブックと架空データで試します。
- 練習用の新規ブックを作る
- xlsm形式で保存する
- 開発タブからVisual Basicを開く
- 信頼できるファイルだけで実行する
2. SubとEnd Subで処理の範囲を作る
VBAの処理は、Subから始まり、End Subで終わります。Subの後ろにマクロ名を書き、実行したい命令をその間に置きます。先頭の「'」から始まる行はコメントとして扱われ、処理されません。
Option Explicit
Sub WriteHeader()
ThisWorkbook.Worksheets("売上").Range("A1").Value = "確認済み"
End Subポイント:「売上」という名前のシートがない場合はエラーになります。先にシート名を確認するか、練習用ブックに同じ名前のシートを作ってください。
3. 変数でシートや行番号を覚える
同じシートや行番号を何度も使うときは、変数に入れるとコードを読みやすくできます。Dimで変数を宣言し、SetでWorksheetオブジェクトを代入します。行数を扱う変数にはLongを使うのが基本です。
Dim ws As Worksheet
Dim lastRow As Long
Set ws = ThisWorkbook.Worksheets("売上")
lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row4. Ifで条件に応じてセルを変える
Ifは、条件が成立したときだけ処理を行う構文です。売上金額が10,000以上ならE列に「確認」、それ以外なら「通常」と入力する例を見てみます。
If ws.Cells(row, "D").Value >= 10000 Then
ws.Cells(row, "E").Value = "確認"
Else
ws.Cells(row, "E").Value = "通常"
End If5. Forで表の最終行まで繰り返す
表の2行目から最終行まで同じ処理を繰り返すときは、ForとNextを使います。次のマクロは、売上シートのD列を確認してE列に判定結果を入力します。1行ずつ動きを確認できるため、初心者の練習題材に向いています。
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. 実行後は結果と変更範囲を確認する
マクロを実行したら、想定した行だけが変更されたか、空白行や見出し行を処理していないかを確認します。初回はデータを複製してから実行し、意図しない結果が出た場合に元へ戻せる状態を作ります。
処理を追加するときは、一度に複数の機能を変えず、見出し入力、最終行取得、判定処理のように一つずつ確認します。エラーが出た行番号とメッセージを記録しておくと、修正箇所を絞りやすくなります。
- 実行前にブックを複製する
- 対象シート名と対象列を確認する
- 空白行・見出し行の扱いを決める
- 小さな変更ごとに実行結果を確認する
VBAの最初の一歩は、短いマクロを動かして仕組みを理解することです。Subで範囲を作り、変数で対象を覚え、IfとForで表を処理する。この順番なら、事務作業の自動化へ少しずつ広げられます。