- VBAって何?マクロとどう違うの?
- VBAを始めたいけど、何から手をつければいいかわからない
- Excelの繰り返し作業を自動化して、残業を減らしたい
このような疑問にお答えします。
VBAはExcelの作業を自動化できるプログラミング言語で、覚えれば毎日のルーティン作業を数秒で終わらせることができます。
このガイドでは、VBAとは何かという基礎の基礎から、実際に動くマクロを書くまでをステップ順に解説します。さらに記事後半では、セル操作・制御構文・配列・文字列処理など、各テーマの詳細ガイドへのロードマップも載せているので、「どこから学べばいいかわからない」という悩みが解消されます。
VBAとは何か
VBA(Visual Basic for Applications)は、Microsoft Officeに内蔵されたプログラミング言語です。ExcelやWord、Outlookなどのアプリ上で動作し、操作を自動化するプログラムを書けます。
「マクロ」という言葉を聞いたことがある方も多いと思います。マクロとはVBAで書いたプログラムそのもののことで、厳密には「VBAというプログラミング言語を使ってマクロを作る」というイメージです。普段の会話では混同されることが多いですが、実務上はほぼ同義で使われています。
VBAでできること
VBAでできることは幅広く、日々の業務に直結します。代表的なものを挙げると次のとおりです。
- データの一括処理
数千行のデータを条件でフィルタして別シートに転記、集計してグラフ生成など - ファイル・フォルダ操作
複数のExcelファイルからデータを収集して1枚のシートにまとめる、CSV出力など - 帳票・レポートの自動生成
テンプレートのシートを複製して、データを流し込んで印刷まで自動化 - メール送信(Outlook連携)
ExcelのリストをもとにOutlookでメールを一括送信 - Webスクレイピング(IE・Chrome連携)
Webページのデータを取得してExcelに転記(※環境依存あり)
逆に言うと、VBAは「Excelが絡む繰り返し作業」全般に強く、毎日同じ操作をしているならほぼ必ず自動化できます。
VBAを学ぶメリット
プログラミング未経験でも習得しやすいのがVBAの特徴です。理由は3つあります。
まず、実行環境がゼロインストールです。ExcelさえあればVBAはすぐ使えます。PythonやJavaのように環境構築で詰まることがありません。
次に、成果がすぐ目に見えるという点。コードを書いたらExcelのシート上に結果が反映されるので、「動いた!」という手ごたえを早く感じられます。
最後に、日本語の学習リソースが豊富です。ExcelはビジネスパーソンのツールなのでVBAの学習者も多く、日本語で調べればほぼどんな疑問も解決できます。
VBAを始める前の環境設定
VBAを使うには、Excelで「開発タブ」を表示する必要があります。デフォルトでは非表示なので、最初に一度だけ設定します。
開発タブを表示する
Excelのメニューから 「ファイル」→「オプション」→「リボンのユーザー設定」 を開きます。右側のリストで「開発」にチェックを入れてOKをクリックすると、リボンに「開発」タブが表示されます。
Macの場合は 「Excel」→「環境設定」→「リボンとツールバー」 から同様に設定できます。
VBE(Visual Basic Editor)の起動
開発タブが表示されたら、「Visual Basic」ボタンをクリックするか、ショートカット Alt + F11(Mac: ⌥ + F11)でVBE(Visual Basic Editor)が起動します。VBEはVBAコードを書く専用エディタで、コードを入力して実行するのはすべてここで行います。
Option Explicitを設定する(必須)
VBEの「ツール」→「オプション」→「編集」タブで、「変数の宣言を強制する」にチェックを入れておきましょう。これをオンにすると、全モジュールの先頭に自動で Option Explicit が挿入されます。
Option Explicit は変数を使う前に必ず宣言することを強制するおまじないで、タイプミスによるバグを防いでくれます。最初からオンにしておくのがベストプラクティスです。
VBAの基本文法
VBAのコードは「プロシージャ」という単位で書きます。プロシージャには2種類あります。
- Subプロシージャ
処理を実行するだけで値を返さない。ボタンに割り当てたり、直接実行したりするマクロの基本形 - Functionプロシージャ
処理を実行して値を返す。ワークシート関数(カスタム関数)としても使える
' Subプロシージャの例
Sub SayHello()
MsgBox "Hello, VBA!"
End Sub
' Functionプロシージャの例
Function Add(a As Long, b As Long) As Long
Add = a + b
End Function変数とデータ型
変数は Dim キーワードで宣言します。型を指定することでメモリ効率が上がり、予期せぬ型変換エラーも防げます。よく使うデータ型は次のとおりです。
Option Explicit
Sub VariableSample()
' よく使うデータ型
Dim name As String ' 文字列
Dim count As Long ' 整数(Long推奨。Integerより安全)
Dim price As Double ' 小数点あり数値
Dim flag As Boolean ' True / False
Dim today As Date ' 日付
Dim val As Variant ' 型不定(なるべく避ける)
name = "Alice"
count = 100
price = 1980.5
flag = True
today = Date ' 今日の日付
MsgBox name & "さん、購入数:" & count
End Sub整数を扱うときは Integer より Long を使うのがおすすめです。Integer は -32,768〜32,767 の範囲しか扱えず、行数が多いシートで予期せずオーバーフローします。Long なら約20億まで対応できるので困りません。
コメントの書き方
行頭に '(シングルクォート)を書くとコメントになります。VBAには複数行コメントの文法はないため、複数行コメントしたいときは各行の先頭に ' を付けます。
' これは1行コメント
Dim i As Long ' 行末コメントもOK定数の使い方
変わらない値は Const で定数として定義しておくと、後で変更が楽になります。
Const TAX_RATE As Double = 0.1 ' 消費税率
Sub CalcPrice()
Dim price As Long
price = 1000
MsgBox "税込価格:" & price * (1 + TAX_RATE)
End Subはじめてのマクロを書いてみよう
理論の説明が続いたので、ここで実際に動くマクロを書いてみましょう。A1セルに「Hello, VBA!」と書き込むだけのシンプルなマクロです。
手順
Alt + F11 でVBEを開き、左側のプロジェクトエクスプローラーで対象のブックを右クリック → 「挿入」→「標準モジュール」を選択します。右側のコードエリアが開いたら、次のコードを入力してください。
Option Explicit
Sub WriteHello()
' アクティブシートのA1セルに文字を書き込む
ThisWorkbook.Worksheets(1).Range("A1").Value = "Hello, VBA!"
MsgBox "書き込みが完了しました!"
End Subコード内にカーソルを置いた状態で F5キー を押すか、VBEのメニューから「実行」→「Sub/ユーザー フォームの実行」をクリックするとマクロが動きます。Excelシートに戻るとA1セルに「Hello, VBA!」が入っているはずです。
ここで使っている ThisWorkbook.Worksheets(1).Range("A1").Value がVBAの核心です。「このブックの1枚目のシートのA1セルの値」という意味で、オブジェクトをドットで繋いで操作対象を指定するのがVBAの基本的な書き方です。
VBA学習ロードマップ
基礎が掴めたら、次のステップに進みましょう。以下はNICCODEのVBAガイド記事一覧です。テーマ別に大型記事にまとめているので、気になるテーマから読み進めてください。
Step 1:セル操作を自在に使いこなす
VBAでいちばんよく書くのがセルの読み書きです。Range・Cells・書式設定・最終行取得など、セル操作の全パターンを1記事でまとめています。
Step 2:制御構文で処理を分岐・繰り返す
If文・For Next・Do While・Select Caseなど、VBAの制御構文を網羅した記事です。「どれを使うべきか」の判断基準も解説しています。
Step 3:配列とDictionaryで大量データを高速処理
配列はVBAで大量データを扱うときに欠かせない仕組みです。静的配列・動的配列・2次元配列・Dictionaryオブジェクトまで1記事でカバーしています。
Step 4:文字列を自在に操る
InStr・Replace・Mid・Left・Right・Split・Joinなど、VBAの文字列操作関数を実例付きで解説。正規表現との比較も含めています。
Step 5:シート・ブックを操る
Workbook・Worksheetオブジェクトの操作から、ブックを安全に開く方法、シートの保護・解除まで、ブック・シート操作のすべてを解説します。
Step 6:ファイル・CSVを読み書きする
ExcelデータをCSVに出力する方法、CSVを読み込む方法、フォルダ操作など、VBAのファイル入出力を実務ユースケース別に解説します。
Step 7:エラー処理とデバッグ
On Error GoTo・Resume・Err.Raiseなどのエラーハンドリング手法と、Debug.Print・ブレークポイントなどのデバッグ方法を解説します。
Step 8:処理を高速化する
画面更新停止・計算モード変更・配列を使った一括処理など、VBAを劇的に高速化するテクニックを解説します。大量データを扱う方は必読です。
こんなことをしたい → どの記事を読む?逆引きナビ
「目的は決まっているけどどこから読めばいいかわからない」という方向けに、用途別の逆引きリストをまとめました。
セルの値を読み書きしたい・書式設定したい
条件で処理を分けたい・繰り返し処理を書きたい
大量データを配列で処理したい・Dictionaryで重複排除・集計したい
文字列を検索・置換・分割したい
シートを追加・削除・コピーしたい・ブックを自動で開きたい
ExcelデータをCSVに出力したい・CSVを取り込みたい
マクロがエラーで止まる・デバッグしたい
マクロが遅い・処理を速くしたい
セルに数式(Formula)を書き込みたい
まとめ
VBAはExcelユーザーが最短で習得できる自動化ツールです。インストール不要で、コードを書いたその日から業務効率化の恩恵を受けられます。
このガイドで学んだことをまとめると、次のとおりです。
- VBAはMicrosoft Officeに内蔵されたプログラミング言語で、マクロを作る言語
- 開発タブの表示とOption Explicitの設定が最初のステップ
- 変数はDimで宣言し、整数はLong型を使うのがベストプラクティス
- コードはSubまたはFunctionプロシージャの中に書く
- 各テーマの詳細は上のロードマップから学べる
まずはセル操作から学ぶのがおすすめです。Excelを使う以上、セルの読み書きは必ずどんな自動化にも登場します。

コメント