Excel作業をもっと効率化したいと思いませんか?
VBAを使えば、面倒なルーチン作業をボタン一つで自動化できます。
本記事では、VBAの基本から実践的な活用法まで初心者向けにわかりやすく解説。環境設定や基本文法、よく使う処理、エラー対策まで網羅しているので、この記事を読むだけでVBAの基礎をしっかり学べます。
業務効率を大幅に向上させましょう!
VBAとは?Excelマクロとの違い

Excelを使った業務を効率化するために「VBA」や「マクロ」という言葉を聞いたことがある人も多いでしょう。どちらも作業を自動化できる便利な機能ですが、厳密には異なるものです。
ここでは、初心者の方も理解しやすいようVBAについて解説し、Excelマクロとの違いを説明します。
VBAとは?
VBA(Visual Basic for Applications)とは、Microsoft Office製品で使用できるプログラミング言語の一種です。
特にExcelでよく活用され、繰り返しのデータ処理や入力作業を自動化するために用いられます。VBAを使うことで、手作業では時間のかかる業務を一瞬で処理したり、複雑なデータの集計を簡単に行ったりすることが可能になるでしょう。
VBAはExcelの開発環境「Visual Basic Editor(VBE)」を使って記述し、Excelシート上で実行されます。また、VBAを習得すれば、ExcelだけでなくWordやPowerPoint、AccessなどのMicrosoft Office製品でも作業を自動化できます。
初心者にとってはハードルが高く感じるかもしれませんが、後で解説している基本的な構文を覚えて、必要に応じて応用的な構文も覚えていくと、想像よりも易しく、かつ業務効率が大幅に改善できるものであることが理解できるはずです。
VBAとマクロの違い
「VBA」と「マクロ」は初心者の方には特に混同されやすいですが、それぞれ異なる概念です。簡単に言うと、マクロは「作業の自動化機能」であり、VBAは「その機能を作るためのプログラミング言語」です。
以下の表に、VBAとマクロの違いをまとめました。
| 項目 | マクロ | VBA |
|---|---|---|
| 定義 | Excelの操作を記録し、自動で再生する機能 | マクロを作成・編集するためのプログラミング言語 |
| 記述方法 | Excelの「マクロの記録」機能で自動生成 | Visual Basic Editor(VBE)で手書き |
| 自動化の範囲 | シンプルな操作(セル入力、書式変更など) | 条件分岐やループ処理など複雑な自動化が可能 |
| 編集の自由度 | 記録した手順のみ再現(修正は難しい) | コードを自由にカスタマイズ可能 |
| 学習のしやすさ | 記録するだけでOK | 基本的なプログラミング知識が必要 |
VBAを学ぶと、マクロの記録機能では対応できない高度な処理を、初心者でも自由に作成できます。例えば、「条件に応じて処理を分岐させる」「大量のデータを一括処理する」といった作業もVBAを使えば可能になります。
そのため、Excelの操作をより柔軟に自動化したい場合は、VBAを学んで活用するのがおすすめです。
マクロについて詳細を知りたい方は、下記をご覧ください。
初心者がVBAを学ぶメリット

VBAは単なるマクロ記録機能では実現できない高度な処理やデータ分析も可能になり、業務の生産性が向上させられるもの。また、プログラミング初心者でも学びやすく、キャリアの幅を広げるスキルとしても有効です。
ここでは、VBAを学ぶことで得られる具体的なメリットを見ていきましょう。
作業の自動化で業務効率UP
VBAを使うと、繰り返し行う作業をワンクリックで自動化できます。
例えば、毎日手入力していたデータ集計やレポート作成も、VBAのコードを実行するだけで完了します。さらに、複数のファイルを一括処理したり、特定の条件に応じてデータを整理したりすることも可能です。
手作業に比べて大幅に時間を短縮できるため、業務効率が飛躍的に向上するでしょう。
作業ミスの削減
手作業でデータを入力・集計しようとすると、初心者は特にヒューマンエラーが発生しやすくなります。
しかし、VBAで自動化すれば、決められたルール通りに作業が実行されるため、入力ミスや計算ミスを防げます。特に、数値の集計やデータの転記など、正確性が求められる業務ではVBAが大いに役立つでしょう。
プログラミング初心者でも学びやすい
VBAは、人間の言葉に近いシンプルな構文で書かれており、プログラミング未経験者でも比較的学びやすい言語です。
Excelの「マクロの記録」機能を活用すれば、VBAコードを自動生成できるため、コードの流れを理解しやすくなります。また、ネット上に豊富な学習リソースやサンプルコードがあるため、独学でも習得しやすいのが特徴です。プログラミング的思考を簡単に学べるのもVBAなので、初心者がプログラミングを学ぶ第一歩として最適な言語と言えます。
VBAでどんなことができるかは、下記記事で詳しく解説しています。
VBAを始める準備

VBA初心者の方は、まずExcelの設定を変更し、開発環境を整えましょう。
ExcelにはデフォルトでVBAを記述・実行できる機能が備わっていますが、初心者の方は以下の要領で「開発」タブの表示やVBAエディターの開き方からおさえることからがスタート。プログラミングも初心者の方は「マクロの記録」機能を活用すると、VBAの動作を直感的に理解しやすくなります。
VBAの環境設定
VBAを使用するには、Excelの「開発」タブを表示させる必要があります。デフォルトでは非表示になっているため、有効化する設定が必要です。
手順は以下の通りです。
- Excelの「ファイル」タブをクリックし、「オプション」を選択する

- 左側メニューの「リボンのユーザー設定」から「メインタブ」内の「開発」にチェックを入れる

- 「OK」をクリックして設定を完了する
設定が完了すると、Excelのリボンに「開発」タブが追加されます。これでVBAを記述したり、マクロを操作したりできるようになります。
Visual Basic Editor(VBE)の開き方
VBAのコードはExcelに搭載されているVBEという専用エディターに入力します。
手順は以下の通りです。
- Excelの「開発」タブをクリックする

- 「Visual Basic」ボタンをクリックするとVBEの画面が開く

キーボードの「Alt」キーを押しながら「F11」キーを押すと、一瞬でVBEが起動します。VBAの開発作業をスムーズに行うには、ショートカットキーも覚えておくと便利です。
マクロの記録機能を試す
VBAの基本を理解するために、まずは「マクロの記録」機能を試してみましょう。マクロの記録機能を使うと、Excel上で行った操作をそのままVBAコードとして記録できます。これにより、VBAの動作やコードの仕組みを直感的に学ぶことができます。
手順は以下の通りです。
- 「開発」タブの「マクロの記録」ボタンをクリックする

- マクロ名を入力して「OK」をクリックする

- Excel上で操作を行う(例:セルに値を入力)
- 「記録終了」ボタンをクリックする

- 「マクロ」ボタンをクリックし、作成されたマクロを実行する

記録したマクロは、VBEで開くことでVBAコードとして確認できます。まずは簡単な操作を記録し、実際にVBAコードを見てみましょう。
初心者でもわかる!VBAの基本文法と書き方
VBA初心者の方は、基本的な文法を理解することから始めましょう。
ここでは、VBAの基本となる「変数」「条件分岐」「繰り返し処理」「関数とプロシージャ」「オブジェクト」について、それぞれの使い方と具体的なコード例を初心者の方向けに紹介します。
変数とデータ型
変数とは、プログラム内でデータを一時的に保存するための入れ物です。VBAでは、データの種類に応じて適切な「データ型」を指定することで、処理の速度を最適化できます。
主なデータ型は以下の通りです。
| データ型 | 内容 | 例 |
|---|---|---|
| Integer | 整数(-32,768~32,767) | 100, -250 |
| Long | 大きな整数(約21億まで) | 123456 |
| Double | 小数点を含む数値 | 3.14, -0.001 |
| String | 文字列(テキスト) | “Hello”, “VBA” |
| Boolean | 真偽値(True/False) | True, False |
変数の宣言と使用例は以下の通りです。
以下のコードでは、数値と文字列を変数に格納し、メッセージボックスで表示します。
Dim num As Integer ‘ 整数型の変数を宣言
Dim message As String ‘ 文字列型の変数を宣言
num = 10
message = “VBAの基本”
MsgBox “数値: ” & num & “、メッセージ: ” & message
End Sub
変数はDimキーワードを使って宣言し、適切なデータ型を指定します。数値や文字列を代入し、MsgBox関数で表示できます。
条件分岐(If・ Select Case)
VBAでは、特定の条件に応じて処理を分岐させることができます。If文やSelect Case文を使うと、異なる条件ごとに処理を指定できます。
If文の基本形(点数に応じて評価を表示)は以下の通りです。
以下のコードでは、点数(score)の値に応じて、異なるメッセージを表示します。
Dim score As Integer
score = 85 ‘ scoreに85を代入
If score >= 90 Then
MsgBox “優秀です!”
ElseIf score >= 70 Then
MsgBox “合格です”
Else
MsgBox “再試験が必要です”
End If
End Sub
Select Caseの基本形(ランクに応じて評価を表示)は以下の通りです。
以下のコードでは、ランク(A, B, C)に応じたメッセージを表示します。
Dim rank As String
rank = “B” ‘ ランクをBに設定
Select Case rank
Case “A”
MsgBox “最高ランクです”
Case “B”
MsgBox “良い成績です”
Case “C”
MsgBox “もう少し頑張りましょう”
Case Else
MsgBox “無効なランクです”
End Select
End Sub
If文は細かい条件を指定でき、Select Caseは条件がシンプルな場合に適しています。
繰り返し処理(For・Do While)
繰り返し処理を使うと、同じ処理を複数回実行できます。ForループとDo Whileループの2種類がよく使われます。
Forループの基本形(1から5までの回数をメッセージボックスで表示)は以下の通りです。
以下のコードでは、1から5までの数を順番にメッセージボックスで表示します。
Dim i As Integer
For i = 1 To 5
MsgBox “ループ回数: ” & i
Next i
End Sub
Do Whileループの基本形(カウントが5になるまで繰り返し処理を実行)は以下の通りです。
以下のコードでは、カウントが1から5になるまで繰り返し処理を行います。
Dim count As Integer
count = 1
Do While count <= 5
MsgBox “カウント: ” & count
count = count + 1
Loop
End Sub
Forループは、指定した回数だけ繰り返し処理を行い、Do Whileループは、指定した条件がTrueの間、繰り返し処理を行います。
VBAの関数とプロシージャ(Sub・Function)
処理をまとめた「プロシージャ(Sub)」や、値を返す「関数(Function)」を定義できます。
Subプロシージャ(メッセージを表示)は以下の通りです。
以下のコードでは、メッセージボックスを表示する処理をSubプロシージャにまとめています。
MsgBox “これはSubプロシージャです”
End Sub
Functionプロシージャ(2つの数を足し算して結果を返す)は以下の通りです。
以下のコードでは、Functionプロシージャを使って、2つの数を足し算し、その結果を表示します。
SampleFunction = a + b
End Function
Sub UseFunction()
Dim result As Integer
result = SampleFunction(10, 20)
MsgBox “合計値: ” & result
End Sub
Functionは、計算結果などの値を返すのに便利です。
オブジェクトの基本(Range・Cells・ Worksheets)
VBAでは、「オブジェクト」を操作することで、Excelのセルやシートを自由に扱うことができます。
Rangeオブジェクト(特定のセルに値を入力)は以下の通りです。
以下のコードでは、セルA1に「こんにちは」という文字を入力します。
Range(“A1”).Value = “こんにちは”
End Sub
Cellsオブジェクト(行・列番号でセルに値を入力)は以下の通りです。
以下のコードでは、1行2列目(B1セル)に「セルB1に入力」という文字を入力します。
Cells(1, 2).Value = “セルB1に入力”
End Sub
Worksheetsオブジェクト(特定のシートに値を入力)は以下の通りです。
以下のコードでは、Sheet2のセルA1に「Sheet2に入力」という文字を入力します。
Worksheets(“Sheet2”).Range(“A1”).Value = “Sheet2に入力”
End Sub
実践編 VBAでできること

VBAを使いExcelでの業務を大幅に効率化できる便利な機能を、初心者の方も理解しやすいよう解説します。
データの自動入力や集計、シートやブックの操作、グラフの作成・更新、さらにはOutlookを使ったメールの自動送信まで、実務で役立つ実践的な活用方法を学びましょう。
データの自動入力と集計
VBAを使えば、手動で入力していたデータを自動で入力したり、集計作業を一瞬で完了させたりすることができます。例えば、特定の範囲に連番を入力したり、複数のセルの合計を計算することが可能です。
以下のコードでは、A1からA10に1から10までの連番を自動で入力します。
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub
以下のコードでは、B1からB10の合計値を計算し、結果をC1に表示します。
Range(“C1”).Value = Application.WorksheetFunction.Sum(Range(“B1:B10”))
End Sub
シートやブックの操作
VBAを使うと、Excelのシートやブックを簡単に操作できます。例えば、新しいシートを追加したり、別のブックを開いたりすることが可能です。
以下のコードでは、新しいシートを作成し、「新しいシート」という名前を付けます。
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add
ws.Name = “新しいシート”
End Sub
以下のコードでは、指定したパスにあるExcelファイル「example.xlsx」を開きます。
Workbooks.Open “C:\Users\Username\Documents\example.xlsx”
End Sub
以下のコードでは、現在開いているExcelファイルを「backup.xlsx」という名前で保存します。
ActiveWorkbook.SaveAs “C:\Users\Username\Documents\backup.xlsx”
End Sub
グラフの作成と更新
VBAを使うと、データを基に自動でグラフを作成したり、既存のグラフを更新したりできます。
以下のコードでは、A1からB6のデータを基に棒グラフを作成し、「売上データ」というタイトルを付けます。
Dim chartObj As ChartObject
Set chartObj = ActiveSheet.ChartObjects.Add(Left:=100, Top:=50, Width:=400, Height:=300)
With chartObj.Chart
.SetSourceData Source:=Range(“A1:B6”)
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = “売上データ”
End With
End Sub
以下のコードでは、シート内の1つ目のグラフのデータ範囲をA1:B10に更新します。
Dim chartObj As Chart
Set chartObj = ActiveSheet.ChartObjects(1).Chart
chartObj.SetSourceData Source:=Range(“A1:B10”)
End Sub
メールの自動送信(Outlook連携)
VBAを使えば、Outlookを利用してメールを自動送信することが可能です。手作業でメールを送る手間を省くことができます。
以下のコードでは、Outlookを利用して「example@example.com」にメールを自動送信し、「report.pdf」を添付します。
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject(“Outlook.Application”)
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = “example@example.com”
.CC = “”
.BCC = “”
.Subject = “VBAによる自動メール”
.Body = “このメールはVBAを使用して自動送信されました。”
.Attachments.Add “C:\Users\Username\Documents\report.pdf” ‘ 添付ファイルのパス
.Send
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
以下のコードでは、メールを送信せずにプレビュー表示し、内容を確認できるようにします。
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject(“Outlook.Application”)
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = “example@example.com”
.Subject = “確認用のメール”
.Body = “このメールはVBAで作成されましたが、送信前に確認できます。”
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
よくあるエラーと対策
初心者でもVBAを活用して業務効率向上できる!
VBAを学ぶことで、Excelの作業を効率化し、業務の生産性を大幅に向上させられます。
本記事では、VBAの基本から実践的な活用法までを解説しました。変数や条件分岐、繰り返し処理といった基礎的な文法を習得することで、Excelの自動化がよりスムーズに行えるようになります。
しかし、実際にVBAを業務で活用するためには、基本的な知識を押さえた上で、実務に即したスキルを身につけることが重要です。
効率的に学び、短期間で実践的なスキルを身につけたい方には、GETT Proskillの「Excelマクロ・VBAセミナー」の受講がおすすめです。本セミナーでは、VBA初心者でも安心して学べるカリキュラムが用意されており、2日間で実務で使えるスキルを効率的に習得できます。
自動化できることは極力自動化して、上手に楽をしながら注力すべき仕事に邁進するため、ぜひVBAを習得してください!