Excel VBA入門:5ステップで自動化を始める完全ガイド

Excel VBAを使えば、毎日の繰り返し作業を数秒に短縮できます。マクロ記録から基本文法まで、プログラミング未経験者でも5ステップで実践できる手順をこの記事で解説します。

目次

この記事でわかること

1日30分×2週間で実務自動化を1本完成させる最短ルートがわかる。マクロ記録で生成されたコードを読み解くだけで、VBA文法を体得できる理由がわかる。IfとForの2構造だけで、実務の繰り返し処理のほとんどに対応できることがわかる。

この記事の結論

Excel VBAの習得は「開発タブ表示→マクロ記録→コード読解→基本文法→実践応用」の5ステップで進めるのが最短ルートです。マクロとVBAはセットで学ぶものであり、最初にマクロ記録で自動生成されたコードを読むことで、VBAの文法を最も効率よく体得できます。プログラミング未経験者でも、この記事の手順を1日30分ずつ実践すれば、2週間以内に実務で使える自動化を1本完成させられます。

今日やるべき1つ

Excelを開き、ファイル→オプション→リボンのユーザー設定で「開発」にチェックを入れてください。これだけで今日の学習準備は完了です(所要時間:2分)。

状況別ショートカット

状況読むべきセクション所要時間
VBAとマクロの違いを知りたいExcel VBAとマクロは役割が異なる3分
環境設定を今すぐ済ませたいExcel VBAは5ステップで起動する5分
自分に向いているか確認したいExcel VBA習得を3分で自己診断3分
基本文法を体系的に理解したいExcel VBAの基本文法は4構造で完結10分
実務に使えるコードが欲しいExcel VBA自動化は5つの仕組みで実現15分
具体的な成功・失敗例を見たいExcel VBAの実例は2パターンで比較5分

Excel VBAとマクロは役割が異なる

VBAとマクロの違いが曖昧なまま学習を始めると、どちらを使えばいいかで手が止まります。この関係を最初に整理しておくだけで、学習の見通しが格段に立てやすくなります。

VBAはExcel組み込みのプログラミング言語

VBA(Visual Basic for Applications)は、Microsoftが開発したプログラミング言語であり、ExcelをはじめWord・Access・OutlookなどOffice製品全般に搭載されています。操作の自動化やデータ処理を柔軟に記述できます(Javadrive VBA基礎解説)。

VBAが強力な理由は「条件分岐・繰り返し・変数」という汎用プログラミングの仕組みをExcelの中で使えることにあります。「もし売上が100万円を超えたら自動で色を変える」「1,000行のデータを1行ずつチェックする」といった、手作業では数時間かかる処理を数秒で完了させられます。単なる便利ツールではなく、Excel業務そのものの生産性を構造的に変える力を持っています。VBAと組み合わせて作業効率を上げる方法を体系的に整えると、業務全体の時間短縮効果がさらに高まります。

マクロはVBAで動く自動化の「実行単位」

マクロとはExcelが操作を記録・実行する自動化機能の呼称であり、VBAはそのマクロを記述するためのプログラミング言語です(SMS DataTech VBA概要)。

マクロが「何をするか(目的)」を表し、VBAが「どう動かすか(手段)」を定義します。Excelの「マクロの記録」機能を使えば、手動操作を自動的にVBAコードに変換してくれます。プログラミング未経験者でも、まず記録機能で動くコードを手に入れ、それを読み解くことでVBAを学べる仕組みになっています。最初から文法を暗記しようとする必要はありません。

マクロ記録とVBA手書きの使い分けは難易度で決まる

マクロ記録で生成されたコードには冗長な部分が含まれる一方、手書きのVBAは「ループ」「条件分岐」「変数」を使った柔軟な処理が可能です(Excel速習 初心者設定)。

実務での使い分けの目安は「繰り返さない1回限りの操作→マクロ記録、毎日・大量データ・条件付き処理→VBA手書き」です。初心者はまずマクロ記録で自動生成されたコードを読む練習から始め、理解が進んだ段階でFor文やIf文を自分で書き足すのが最も挫折の少ないルートです。

CHECK

▶ 今すぐやること:Excelを開き、「開発」タブが表示されているか確認してください。なければ次のセクションに進んでください(2分)

よくある質問

Q:マクロとVBAはどちらから学ぶべきですか?

A:マクロ記録から始めるのが最短ルートです。記録機能で生成されたVBAコードを読むことで、文法を体系的に学べます(Tech-Teacher VBA初心者)。Q:VBAはExcel以外でも使えますか?A:Word・Access・OutlookなどOffice製品全般で使用できますが、この記事はExcelに特化した解説をしています。

Excel VBAは5ステップで起動する

「開発タブが見つからない」「どこから始めればいい?」という疑問は、VBA学習で最初にぶつかる壁です。この5ステップを順番に実行すれば、初日に実際にコードを動かすところまで到達できます。

開発タブは3クリックで表示できる

Excelの初期状態では開発タブは非表示です。表示する手順は「ファイル→オプション→リボンのユーザー設定」を開き、右側リストの「開発」にチェックを入れてOKを押すだけで完了します(Excel速習 初心者設定)。

この設定は一度行えば次回以降は不要で、所要時間は2分以内です。開発タブが表示されると、マクロ記録・VBEの起動・フォームの挿入が1クリックでできるようになります。

VBE(Visual Basic Editor)の起動と標準モジュールの挿入

開発タブが表示されたら、「Visual Basic」ボタン(またはAlt+F11キー)でVBE(Visual Basic Editor)を起動してください。VBEはVBAコードを書くための専用エディタです(Javadrive VBA基礎解説)。

VBE画面左側の「プロジェクトエクスプローラー」で対象のExcelファイルを右クリックし、「挿入→標準モジュール」を選ぶと、コードを書くためのモジュールシートが追加されます。この標準モジュールが「VBAコードの書き場所」です。Subプロシージャはこの場所に記述します。

.xlsmファイル保存は必須の設定

VBAコードを含むExcelファイルは、通常の.xlsx形式では保存できません。マクロを含んだまま保存するには、「名前を付けて保存→ファイル形式→Excelマクロ有効ブック(.xlsm)」を選んでください(note.shiftinc VBA基礎)。

.xlsx形式で保存しようとすると「マクロが削除されます」という警告が表示されます。VBAを使うファイルは最初から.xlsm形式で作成・保存する習慣をつけてください。

マクロ記録でVBAの動作を体感する

開発タブ→「マクロの記録」をクリックし、名前を入力してOKを押すと、それ以降のExcel操作がVBAコードとして自動記録されます(Tech-Teacher VBA初心者)。

試しに「A1セルに”テスト”と入力→Enter→セルをB1に移動→記録終了」という操作を記録してみてください。VBEを開くと、この操作が以下のようなコードに変換されているのを確認できます。自動生成されたコードを読むことで「セル操作がどんな文法で書かれるか」が直感的につかめます。これがVBA学習で最も効率のよいスタート方法です。

F5キーでコードを実行する

VBEのSubプロシージャ内にカーソルを置いた状態でF5キーを押すと、コードが即座に実行されます(SMS DataTech VBA概要)。

実行エラーが出た場合、VBEは問題のある行を黄色でハイライトしてくれます。エラーメッセージには番号と内容が表示されるため、エラー番号をそのまま検索すれば多くの場合は解決策が見つかります。最初のうちはエラーを「失敗」ととらえず、「コードの読み方を学ぶ教材」として活用してください。

CHECK

▶ 今すぐやること:開発タブを表示し、VBEを起動して空の標準モジュールを1つ挿入してください(5分)

よくある質問

Q:VBEの「プロジェクトエクスプローラー」が表示されていない場合は?

A:VBEの「表示」メニューから「プロジェクトエクスプローラー」を選ぶと表示できます。Q:.xlsm保存を忘れてしまったらコードは消えますか?A:.xlsx形式で保存した場合、保存時の警告を無視してしまうとVBAコードが削除されます。作業前に必ず.xlsm形式を確認してください。

Excel VBA習得を3分で自己診断

以下の質問に答えるだけで、今のあなたに最適なスタート地点がわかります。

Q1:Excelで同じ操作を週に3回以上繰り返していますか?

Yesの場合はQ2へ進んでください。

Noの場合はResult Aに進んでください。

Q2:その繰り返し作業は「特定の条件(もしXならYをする)」を含みますか?

Yesの場合はResult Cに進んでください。

Noの場合はResult Bに進んでください。**

Result A:まずマクロ記録から体験繰り返し作業が少ない場合でも、VBAの基礎知識は業務の幅を広げます。本記事のステップ2(環境設定)とステップ3(マクロ記録)だけを最初に体験してみてください。所要時間は30分以内で完了します。

Result B:マクロ記録で十分な段階繰り返しはあるが条件分岐を含まない作業は、マクロ記録で自動化できます。記録→実行→コード確認のサイクルを3回繰り返すと、自然にVBAの文法が身についていきます。

Result C:VBA手書きに進む段階**条件付きの繰り返し処理は、マクロ記録では対応できません。本記事の基本文法セクション(IfとFor)を優先的に読み、1つの実務タスクを題材にVBAを書く練習を今週中に始めてください。VBAを使いこなすほど、時間管理アプリなどのツールと組み合わせた業務効率化の幅も広がります。

CHECK

▶ 今すぐやること:自分が週に3回以上繰り返している作業を1つ書き出してください。それがVBA学習の最初の題材になります(3分)

よくある質問

Q:プログラミングが全くの未経験でもVBAは習得できますか?

A:習得できます。VBAはExcel操作の延長として設計されており、他のプログラミング言語より文法がシンプルです。マクロ記録で自動生成されたコードを読む学習法は、未経験者に特に有効です。Q:VBAを学ぶのに何時間かかりますか?A:実務で使える1本の自動化ツールを完成させるまで、1日30分の学習を2週間(合計約7時間)続ければ到達できます。

Excel VBAの基本文法は4構造で完結

VBAに必要な基本文法は「Sub・変数・条件分岐・ループ」の4構造だけです。この4つを理解すると、実務の自動化タスクの多くに対処できます。

Subプロシージャはコードの「実行単位」

VBAのすべてのコードは「Sub」と「End Sub」の間に記述します。この単位を「プロシージャ」と呼び、1つのプロシージャが1つの処理のまとまりを表します(Javadrive VBA基礎解説)。

Sub 売上集計()

    ‘処理をここに記述する

End Sub

プロシージャ名は日本語でも英語でも使用できます。コードが長くなる場合は処理を複数のプロシージャに分割し、メインのプロシージャから呼び出す構造にすることで、後から読み返しやすくなります。コメント(’)を最初から書く習慣をつけると、1週間後の自分でも内容を理解できるコードになります。

変数宣言はDim文で行う

VBAで変数を使うには「Dim 変数名 As データ型」の形式で宣言してください(Tech-Teacher VBA初心者)。

Dim i As Integer      ‘整数を格納する変数

Dim name As String    ‘文字列を格納する変数

Dim flag As Boolean   ‘真偽値を格納する変数

データ型を指定しない「Variant型」も使用可能ですが、処理速度が遅くなり、意図しない型変換によるバグの原因にもなります。最初から型を明示する習慣をつけることで、後々のデバッグ時間を大幅に削減できます。モジュールの先頭に「Option Explicit」と記述しておくと、宣言されていない変数の使用をExcelが自動的に警告してくれます。初心者に特に有効な設定です。

IfとForは実務の自動化に直結する

条件分岐のIf文とループのFor文は、VBAで最も頻繁に使う構造です(Excel UBARA マクロ基礎)。

‘If文の基本形

If 点数 >= 80 Then

    MsgBox “合格”

Else

    MsgBox “不合格”

End If

‘Forループの基本形

For i = 1 To 100

    Cells(i, 1).Value = i

Next i

For文で注目すべき点は「Cells(行, 列)」の書き方です。行番号と列番号を変数で指定できるため、ループと組み合わせると「1行目から1,000行目まで順番に処理する」といった大量データ処理が数行のコードで実現します。IfとForを組み合わせる練習を最初に重点的に行うことで、実務直結の自動化スキルが最短で身につきます。こうした繰り返し作業の自動化は、売掛金管理をExcelで自動化する場面でも応用できます。

RangeとCellsはセル参照の2つの書き方

VBAでセルを操作する方法は「Range」と「Cells」の2通りがあります(Javadrive VBA基礎解説)。

‘Rangeで特定のセルを指定する場合

Range(“A1”).Value = “こんにちは”

‘Cellsで行番号・列番号を指定する場合

Cells(1, 1).Value = “こんにちは”  ‘1行1列目=A1と同じ

Rangeは「特定のセルや範囲を直接指定したいとき」に使いやすく、Cellsは「変数でセルを動的に指定したいとき」に便利です。Forループと組み合わせる場合はほぼ常にCellsを使います。Range(“A1:C10”)のような範囲指定もRangeで可能であり、この範囲ごとの一括処理を覚えるだけで、個別セル操作より大幅な効率化が実現します。

CHECK

▶ 今すぐやること:VBEを開き、「Sub test() / MsgBox “Hello VBA” / End Sub」と入力してF5キーで実行してください。ダイアログが表示されれば成功です(5分)

よくある質問

Q:Option ExplicitはすべてのVBAファイルに必要ですか?

A:必須ではありませんが、すべてのモジュールに記述してください。VBEの「ツール→オプション→変数の宣言を強制する」にチェックを入れると、新規モジュール作成時に自動挿入されます。

Q:Rangeで範囲を選択するコードが動きません。原因は?

A:セル参照の文字列(”A1″など)は半角で入力する必要があります。また、存在しないシート名をActiveSheet以外で参照している場合もエラーになります。

Excel VBA自動化は5つの仕組みで実現

文法を理解した後、実際の自動化に結びつかないのはVBA学習でよくある壁です。以下の5つは実務で最も役立つ自動化パターンです。それぞれ今日から試せる形で紹介します。

ハック1:最終行取得で行数不定のデータを自動処理

【対象】:月ごとにデータ量が変わるシートを毎月集計している方

以下のコードで最終行を変数に格納してから、Forループの終端にlastRowを使い「For i = 1 To lastRow」と記述して実行してください(所要時間:7分)。

Dim lastRow As Long

lastRow = Cells(Rows.Count, “A”).End(xlUp).Row

「For i = 1 To 100」のように行数を固定で書くと、データが変わるたびにコードを書き直す手間が発生します。lastRow変数を使って動的に終端を取得すると保守性が高くなります。Cells(Rows.Count, “A”).End(xlUp).RowはExcelの「Ctrl+↑」操作をコードで再現したものであり、最下行からA列の最後の入力セルまで遡る仕組みです。

A列に空白行がある場合、最終行の取得が途中で止まります。データが入っている列(空白なし)を基準列として選んでください。

ハック2:Ifで条件付き塗りつぶしを自動化

【対象】:売上や進捗データを目視確認してセルを手動で色分けしている方

色分けしたいデータ列と条件値を確認してから、以下のコードを記述してF5で実行してください(所要時間:4分)。

Dim i As Long

Dim lastRow As Long

lastRow = Cells(Rows.Count, “B”).End(xlUp).Row

For i = 2 To lastRow

    If Cells(i, 2).Value >= 100 Then

        Cells(i, 2).Interior.Color = RGB(144, 238, 144) ‘薄緑

    Else

        Cells(i, 2).Interior.Color = RGB(255, 255, 255) ‘白に戻す

    End If

Next i

このコードではElse節で白色にリセットする処理を含んでいるため、データを更新してマクロを再実行するたびに常に正しい状態になります。条件が増えた場合は「ElseIf」を追加するだけで拡張できます。

条件分岐が5つ以上になる場合はIf-ElseIfより「Select Case」文の方が可読性が高くなります。

ハック3:MsgBoxとInputBoxで対話型マクロを作成

【対象】:毎回決まった値(月・担当者名・金額)を入力してからマクロを動かしている方

InputBoxで入力値を受け取るコードを記述し、受け取った値を処理内で使用してください(所要時間:12分)。

Dim monthName As String

monthName = InputBox(“集計する月を入力してください(例:2024年4月)”)

If monthName = “” Then

    MsgBox “キャンセルされました”

    Exit Sub

End If

マクロは全自動で動かすことが多いですが、実務では「月や担当者によって処理内容を変えたい」ケースも多く、InputBoxで実行時に値を受け取る設計の方が使いまわしやすくなります。キャンセル時のExit Sub処理は忘れやすいため、InputBoxを使う場合は必ずキャンセル対応のコードをセットで書いてください。

InputBoxで受け取った値は文字列型です。数値計算に使う場合はCLng関数やCDbl関数で型変換する処理を加えてください。省略すると「型が一致しません」エラーが発生します。

ハック4:オートフィルタで条件抽出を自動化

【対象】:毎週フィルタをかけてデータを絞り込み、別シートに貼り付けている方

フィルタをかけたい範囲と列番号を確認してから、以下のコードで抽出し、抽出後に別シートへコピーする処理を追加してください(所要時間:11分)。

‘既存フィルタのクリア

If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False

‘フィルタ適用(B列で”東京”に一致する行を表示)

Range(“A1″).AutoFilter Field:=2, Criteria1:=”東京”

「AutoFilterModeプロパティがTrueかどうか」を先に確認してからリセットする1行を加えるだけで、フィルタが既にかかっている状態でも安全に実行できます。この確認を省くと、フィルタが二重にかかってしまうエラーが起きます。

AutoFilterを使うとき、見出し行を含めた範囲指定が必要です。データ行だけを指定するとフィルタが正しく機能しないケースがあります。

ハック5:エラー処理でマクロを止めない設計

【対象】:マクロ実行中にエラーで処理が途中停止して困っている方

エラーが想定される処理の前に「On Error Resume Next」を記述し、処理後に「On Error GoTo 0」でエラー処理を元に戻してください(所要時間:12分)。

On Error Resume Next

Workbooks.Open “C:\data\report.xlsx”

If Err.Number <> 0 Then

    MsgBox “ファイルが見つかりません: ” & Err.Description

    On Error GoTo 0

    Exit Sub

End If

On Error GoTo 0

「On Error Resume Next」は「ファイルが存在しない」「シートが見つからない」などの想定内エラーに対して処理を分岐させるために有効なテクニックです。重要なのは「Resume Nextで無視するのではなく、Err.Numberで内容を確認してから対処する」設計にすることです。

On Error Resume Nextを使ったまま後続のコードを書き続けると、別の箇所で起きたエラーも無視されてしまいます。処理が終わったら必ずOn Error GoTo 0でエラー処理を元の状態に戻してください。On Error Resume Nextの範囲は最小限にするのが鉄則です。

CHECK

▶ 今すぐやること:ハック1の最終行取得コードを自分のExcelファイルで試し、lastRowの値がMsgBox(lastRow)で正しく表示されることを確認してください(10分)

よくある質問

Q:マクロの実行速度を上げる方法はありますか?

A:「Application.ScreenUpdating = False」をSubの先頭に入れると画面描画を止め、処理速度を向上させられます。End Subの前に「Application.ScreenUpdating = True」で元に戻すことを忘れないようにしてください。

Q:複数のシートを跨いだ処理はどう書きますか?

A:「Sheets(“シート名”).Range(“A1”).Value」のようにシート名を明示して参照してください。ActiveSheetに依存したコードは、シートが切り替わったときにバグの原因になります。

Excel VBAの実例は2パターンで比較

VBAの習得過程には、早期に実践した成功例と、文法だけに集中してしまった失敗例があります。それぞれ見ていくと、習得の順序がいかに重要かがわかります。

ケース1(成功パターン):マクロ記録から始めて2週間で実務自動化

Excelユーザーのケースでは、最初にマクロ記録で「フォント変更→罫線追加→印刷」の操作を記録し、生成されたVBAコードを読み解くことから学習を開始しました。生成されたコードに変数とForループを追加する形でカスタマイズし、2週間目には毎日30分かかっていた日次レポート作成を大幅に短縮しました。「動くコードを先に持つ」起点に置いたことで、文法の理解が具体的な成果と結びつき、モチベーションが持続しました。

「マクロは記録機能、VBAは柔軟なプログラミング言語。初心者は必須構文から押さえるとスキルアップが早い」という声もあります(Excel VBA入門 note)。VBAの習得が進むと、Chromeの拡張機能などのブラウザツールとの組み合わせで、さらに広い範囲の業務効率化が視野に入ってきます。

最初から文法書を読み込むアプローチを取っていたら、実務への接続が遅れ、途中で学習を止めてしまった可能性があります。

ケース2(失敗パターン):文法だけ学んで実務で使えなかった例

別のケースでは、VBAの文法学習に2週間を費やしたものの、実際のExcelファイルに対してコードを書いたことがなく、実務で「どのセルをどう操作するか」が結びつかずに行き詰まりました。文法の知識と実務のシートが別の世界として存在してしまった状態です。VBA習得で重要なのは「完全に理解してから書く」ではなく「動かしながら理解する」順序だということが、この経験からはっきりわかります。

「Excel作業を自動化で時短。開発タブ追加から.xlsm保存まで画像で丁寧に解説、すぐに実践可能」というユーザーの報告があります(note.shiftinc VBA基礎)。

最初の1日目にマクロ記録を1本作成する課題を設けていれば、理論と実践のギャップを早期に埋められた可能性があります。

CHECK

▶ 今すぐやること:自分の実務で「毎週繰り返している作業」を1つ選び、まずマクロ記録で記録してVBEでコードを確認してください(15分)

よくある質問

Q:VBAの学習時間の目安はどのくらいですか?

A:実務で使える1本のマクロを完成させるまで1日30分×2週間が目安です。最初の1週間は環境設定とマクロ記録の体験、2週間目はForとIfを組み合わせた自作コードの作成に集中するのが効率的です。

Q:VBAのエラーが出たとき、どこを見れば解決しますか?

A:VBEのイミディエイトウィンドウ(Ctrl+G)で変数の値を確認し、エラー番号をそのまま検索するのが最短の解決法です。エラー番号とExcelバージョンをセットで検索すると、対応策が見つかりやすくなります。

Excel VBAを5ステップで自動化する:今日から始める4つの行動

Excel VBAは「開発タブ表示→マクロ記録→コード読解→基本文法→実践応用」の5ステップで、プログラミング未経験者でも2週間以内に実務自動化を1本完成させられます。

マクロ記録で動くコードを手に入れ、それを少しずつカスタマイズしていく積み上げ方が、VBAを実務で使えるスキルに変える最速のルートです。今日1つでも実際に手を動かしてください。

状況次の一歩所要時間
環境設定がまだ開発タブを表示して.xlsmファイルを1つ作成5分
設定済みで何から書くか迷っているマクロ記録で操作を1本記録し、VBEでコードを確認10分
基本文法を試したいVBEにSubプロシージャを書いてF5で実行15分
実務に使いたい自分の繰り返し作業をテーマに最終行取得+Forループを書く30分

※本記事の情報は2025年7月時点のものです。

Excel VBAに関するよくある質問

Q:VBAはプログラミング未経験でも学べますか?

A:学べます。VBAはExcelの操作をコードで表現する言語であり、マクロ記録で自動生成されたコードを読み解く学習法を取れば、プログラミングの基礎知識がなくても2週間で実務利用できるレベルに到達できます。

Q:VBAとGoogleスプレッドシートのGASはどちらを学ぶべきですか?

A:職場の環境がExcelであればVBAを優先してください。ExcelとGoogleスプレッドシートの両方を使う環境であれば、VBAを先に習得してからGASに移行する方が、文法の類似性(どちらもオブジェクト操作が基本)から学習コストを下げられます。VBAと合わせてセルフマネジメントの習慣化を意識すると、継続的な学習が定着しやすくなります。

Q:VBAで作ったマクロを他の人が使う場合、注意点はありますか?

A:配布するファイルは.xlsm形式を維持し、受け取った側がExcelのマクロセキュリティ設定を「信頼できる場所」に設定するか、ファイルを開く際に「コンテンツを有効にする」を選ぶ必要があります。組織内での共有は社内のセキュリティポリシーを事前に確認してください。

【出典・参照元】

Javadrive VBA基礎解説

Tech-Teacher VBA初心者

SMS DataTech VBA概要

Excel UBARA マクロ基礎

Excel速習 初心者設定

Excel VBA入門 note

note.shiftinc VBA基礎

目次