\ お問い合わせはこちら /

【完全版】Excel VBAの基礎を全部ここに置いていく|構文・文法・基本操作・実務に直結する書き方まで徹底解説

Excel VBA を「完全に理解する」ための基礎を 1記事で全部まとめた保存版 です。

  • そもそも VBA とは?
  • どこまで自動化できる?
  • 書き方・構文・文法
  • よく使う命令の“実務的な使い方”
  • 初心者が必ずつまずくポイント
  • コピペしてすぐ動くコード例

VBA は“覚える量”よりも“考え方”が大切なので、
この記事では 概念 → コード例 → 実務解説 の流れで理解できるように解説します。

目次
  1. 1. Excel VBAとは?できること・できないことの本質
  2. 2. VBAを書く準備|初期設定と最初に覚えるべき操作
  3. 3. VBAの基本構文|必ず覚える8つの要素
  4. 4. 最重要:RangeとCellsの使い分け
  5. ## 5. シート操作の基本(最重要)
  6. 6. よく使う実務コード|コピペで使える
  7. 7. エラー対策|On Errorの正しい使い方【完全版】
  8. 8. まとめ:VBAは「作業の自動化の言語」

1. Excel VBAとは?できること・できないことの本質

1-1. Excel VBAは「Excelを自動操作するリモコン」

VBAとは簡単に言えば、

パソコンに「Excelでこう動いて」と命令するための言語

Excelの操作を自動化できるため、
クリックや入力・コピー&ペーストなどの繰り返し作業を“ゼロ”にできます。

1-2. VBAでできること

  • シート間のデータ転記
  • CSV の自動取込
  • 複数ブックの一括処理
  • PDF 出力の自動化
  • OutlookやWordとの連携
  • フォルダ内ファイルの処理

1-3. VBAでできないこと

  • Excel の外の OS 操作は制限が多い
  • 特殊なデバイス制御は苦手
  • GUI(アプリ画面)を作るのも得意ではない

2. VBAを書く準備|初期設定と最初に覚えるべき操作

2-1. 開発タブを出す

  1. ファイル → オプション
  2. リボンのユーザー設定
  3. 開発タブにチェック

2-2. 実行の最速ショートカット

  • F5:実行
  • F8:1行ずつ実行(超重要)
  • Ctrl + Space:コード補完

3. VBAの基本構文|必ず覚える8つの要素

ここからは 「Excelに命令を書く」ための文法 を解説します。


3-1. Sub(プロシージャ)宣言

VB
Sub Sample()
    MsgBox "こんにちは"
End Sub

Excelに「あ、ここから命令が始まるんだな」と伝える“入口”です。

3-2. 変数の宣言

VB
Dim name As String
Dim price As Long
Dim flag As Boolean
  • String:文字列
  • Long:整数
  • Boolean:True/False
  • Double:小数

変数=情報を入れる箱 です。


3-3. 値の代入

VB
name = "Tabigrammer"
price = 1200
flag = True

3-4. If 条件分岐

VB
If price > 1000 Then
    MsgBox "高いです"
Else
    MsgBox "安いです"
End If

条件によって処理を変えたいときに使います。


3-5. For ループ

VB
Dim i As Long

For i = 1 To 10
    Cells(i, 1) = i
Next i

繰り返しの自動化の中心。


3-6. Select Case(複数条件)

VB
Select Case price
    Case 0
        MsgBox "無料"
    Case 1 To 999
        MsgBox "安い"
    Case Else
        MsgBox "高い"
End Select

3-7. With(同じ対象にまとめて命令)

VB
With Range("A1")
    .Value = "こんにちは"
    .Font.Bold = True
    .Interior.Color = vbYellow
End With

3-8. MsgBoxとInputBox

VB
MsgBox "完了しました"

Dim user As String
user = InputBox("名前を入力してください")

4. 最重要:RangeとCellsの使い分け

4-1. Range(住所指定)

VB
Range("A1").Value = "OK"
Range("B2:C5").ClearContents

4-2. Cells(行番号 × 列番号で指定)

VB
Cells(1, 1).Value = "OK" ' A1
Cells(3, 5).Value = 100  ' E3

4-3. 実務ではRangeとCellsの併用が最強

VB
Range("A1").Offset(1, 0).Value = "下のセル"

## 5. シート操作の基本(最重要)

VB
Worksheets("売上").Range("A1") = 100
Sheets(1).Cells(1, 1) = "Hello"

Tip:実務では必ず「シートをFixする」方が事故が起きない

VB
Dim ws As Worksheet
Set ws = Worksheets("売上")

ws.Range("A1") = 100

6. よく使う実務コード|コピペで使える

6-1. 特定フォルダから Excel を全部読み込む

VB
Dim f As String
Dim path As String
path = "C:\Test\"

f = Dir(path & "*.xlsx")

Do While f <> ""
    Workbooks.Open path & f
    ' ここに処理を書く
    Workbooks(f).Close SaveChanges:=False
    f = Dir()
Loop

6-2. 最終行の取得(鉄板)

VB
Dim last As Long
last = Cells(Rows.Count, 1).End(xlUp).Row

6-3. CSVを自動取り込み

VB
Workbooks.Open "C:\Data\sample.csv"

6-4. 一括でPDF出力

VB
ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:="C:\Test\output.pdf"

7. エラー対策|On Errorの正しい使い方【完全版】

VBA では エラー処理を書かないと、処理が途中で止まる“未完成の自動化” になります。

業務では 「止まる自動化」は使い物にならない ため、On Error の理解は必須です。

ここでは実務で通用するために必要なすべてをまとめました。

7-1. On Error の基本構文

VB
On Error GoTo ErrHandler  ' エラー時にジャンプする先を指定

' ---- メイン処理 ----
Range("A1") = 100

Exit Sub   ' 正常終了時はハンドラーに流れないようにする

' ---- エラーハンドラー ----
ErrHandler:
    MsgBox "エラー発生:" & Err.Description
  • On Error GoTo ErrHandler
    エラーが起きると ErrHandler: に飛ぶ
  • Exit Sub を必ず入れる
    正常時にハンドラーまで流れてしまうのを防ぐ
  • Err.Description でエラー内容を取得できる

7-2. On Error の種類と使い分け【実務必須】

✔ On Error GoTo ラベル

→ 一番使う。“エラーが出たらまとめて処理”

VB
On Error GoTo ErrHandler

✔ On Error Resume Next

→ “エラーを無視して次へ進む”。
限定的に使うのはOKだが、多用は危険

VB
On Error Resume Next
value = Cells(1, 1).Value   ' 存在しなくても止まらない
On Error GoTo 0              ' 解除(これ重要)

✔ On Error GoTo 0

→ エラー処理を解除して“通常の挙動”に戻す
(Resume Next の後は必ず使う)

7-3. 実務で必須「Finally」の考え方

VBA には Finally がありません。
しかし、常に実行したい処理(例:ファイルを閉じる)は独自に書く必要があります。

VB
On Error GoTo ErrHandler

Set wb = Workbooks.Open("C:\test.xlsx")

' --- 本来の処理 ---
MsgBox wb.Sheets(1).Range("A1").Value

CleanExit:
    If Not wb Is Nothing Then wb.Close SaveChanges:=False
    Exit Sub

ErrHandler:
    MsgBox "エラー:" & Err.Description
    Resume CleanExit

これができてはじめて“止まらない自動化”になります。

7-4. Resume の正しい使い方

Resume“どこから処理を再開するか” を指定します。

種類意味
Resumeエラーが発生した行から再実行
Resume Nextエラーの次の行から実行
Resume ラベル指定した行にジャンプして実行

例:

VB
ErrHandler:
    If Err.Number = 1004 Then
        Resume Next      ' 関係ないエラーなら次の処理へ
    Else
        Resume Critical   ' 特定エラーは別処理へ
    End If

7-5. よくある「ダメなエラー処理」

結論、On Error Resume Next だけ書くというものです。

VB
On Error Resume Next
Workbooks.Open "aaa.xlsx"   ' 失敗しても分からない
Sheets(1).Range("A1") = 1

エラーを見失う。
→ デバッグ不能になる

必ずエラー解除 or チェックを入れる。

7-6. 実務で使える“最強テンプレ”【コピペOK】

以下が 実務で100%使えるプロ仕様のテンプレ です。

VB
Sub Main()

    On Error GoTo ErrHandler

    ' ---- 変数宣言 ----
    Dim wb As Workbook
    Dim path As String: path = "C:\test.xlsx"

    ' ---- メイン処理 ----
    Set wb = Workbooks.Open(path)
    MsgBox wb.Sheets(1).Range("A1").Value

CleanExit:
    ' ---- 必ず実行する後処理 ----
    If Not wb Is Nothing Then
        wb.Close SaveChanges:=False
    End If

    Exit Sub

ErrHandler:
    MsgBox "エラー:" & Err.Number & vbCrLf & Err.Description

    ' 必ず後処理に流す
    Resume CleanExit

End Sub

これだけで 止まらない・壊れない・後片付けできる自動化 が作れるようになります。


7-7. 実務での判断基準まとめ

ケース正しい書き方
通常のマクロGoTo ラベル(基本)
存在しないかもしれないオブジェクトResume Next+エラーチェック
ファイルを必ず閉じたいCleanExit を作って Resume CleanExit
デバッグ中On Error は一切書かずに動作確認
運用フェーズ“止まらない”エラーハンドリングを必ず入れる

8. まとめ:VBAは「作業の自動化の言語」

Excel VBAは覚える量が多いように見えますが、実は 基本構文 × Range/Cells × ループ の3つだけでほぼ全部できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

普段はエンジニアとして働きつつ、旅行では「住むように旅する」をテーマに動き回っています。

TABIGRAMMER では、
・旅の情報(台湾を中心としたアジア旅ガイド)
・ミニマリストの持ち物や旅の効率化テクニック
・ブログ運営やプログラミング記事

といった、旅とITが交差するコンテンツを発信しています。

難しいことをわかりやすく、旅をより快適に。そんなスタイルで記事を書いています。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)