Excel VBA マクロの記録を解説
Excel VBAの開発環境は整えたけど、何から初めていいか分からなくないですか?
処理を自動化しようにもどんなコードを書けばいいか分からない。
例えば行を削除したり、追加したり、セルの値を削除したり、ピボットテーブルを作成したり・・・
普通はピボットテーブルの作成コードなんて何も見ずに書くことなんてできません。
コードが分からないときはマクロの記録
大体のコードは検索すれば出てくるのですが、もし具体的な処理の手順が決まっているのであれば初心者のうちはマクロの記録を使って手動で処理を行った後で記録されたコードを確認するのがおすすめです。
この機能で記録されたコードを一度確認しておけば次回以降も使い回すことができるため初心者のうちは特に重要な作業です。
自動記録の手順
- Excelで「開発」タブ → マクロの記録をクリック
- 操作を実際に行う(例:行や列の削除、追加など)
- 記録終了すると、その操作がVBAコードとして保存される
- 記録したコードはVBE → プロジェクトエクスプローラ内の「モジュール」に格納される(例:Module1など)
自動記録されたコードの特徴
自動記録されたコードには下記のような特徴があります。
- 操作を逐一記録するため、冗長なコードになりやすい(何気なく行ってしまったセルのクリックなど意味のない動作も漏れなく記録されます)
- コードの流れが操作手順そのものなので「動作の裏側」は理解しやすいが効率が悪いため修正や整理が必要
主な修正内容
- 不要な Select や Activate を削除し、対象のセルやシートを直接指定する
- 繰り返し作業は For ~ Next や Do ~ Loop などにまとめる
- 固定値(セル番地やシート名)は変数化して再利用性を高める
まとめ
コードの書き方が分からないときは積極的にマクロ記録機能を使いましょう。
特に初心者のうちはこの機能を利用してコードを確認することで次回以降に使い回すことができるのでおすすめです。
しかし、自動記録で作られるコードは完璧ではないので、対象物の直接指定、繰り返し、変数化を意識して積極的に修正や整理を行いましょう。
Excel VBAの開発環境構築
Excel VBA 開発環境の構築方法
経理や事務の現場では、単純作業だけれどボリュームが多く、同じ操作を何度も繰り返すことが少なくありません。
そのような作業に疲弊していませんか?
私自身も経理業務の中で何度も「ここを自動化できれば…」と思う場面に直面してきました。実際、毎月90分以上かかっていた転記作業を、マクロを導入することで確認まで含めて20分、転記そのものは一瞬に短縮することができました。
この記事では、マクロ開発を始めるためにまず必要な「開発環境の構築手順」を解説します。
VBA開発環境とは
- VBA(Visual Basic for Applications):Excelでマクロを記述するためのプログラミング言語。
- VBE(Visual Basic Editor):VBAコードを入力・編集するための専用画面。
マクロを作成する際は必ずVBEを利用します。そのため、まずはExcelに開発環境を整えることが必要です。
手順1:開発タブを表示する
- Excelを開き、[ファイル] → [オプション] をクリック
- [リボンのユーザー設定] を選択
- 右側の一覧から [開発] にチェックを入れる

これでリボンに「開発タブ」が表示されます。
手順2:VBEを起動する
- [開発] タブをクリック
- [Visual Basic] を選択

これでVBEが立ち上がり、コードを記述できる環境が整います。
まとめ
VBAでマクロを作成するための初期設定は、次の2ステップです。
-
開発タブを追加
-
Visual Basicを起動
これで準備は完了です。あとは実際にマクロを記述して、自分の業務に合わせた自動化を進めていきましょう。
感覚的ではあるけれど、ByRefとByVal(参照渡し、値渡し)の違い
VBAでコードを書いていると、一つ一つの処理は出来るだけ細かく最小単位で作っておいてそれぞれのサブやファンクションのプロシージャを呼び出しながらコードを書くことが効率が良いことに気付くと思います。
その時プロシージャ間で変数を受け渡すことが出来ますがByRefなのかByValなのか迷ったことはありませんか?
今回はそんなお悩みを解決します。
引き渡した変数の中身は変更するか?
引き渡した変数の中身を変更するならByRef、変更しないならByValを指定します。
例えば呼び出し元のプロシージャで配列を取得し呼び出したプロシージャに引数として渡すとします。
このとき配列を加工して呼び出し元に戻す場合はByRefを設定し、参照するだけであればByValとします。
ByRefの省略
ByRefは省略することができます。
省略した場合、スッキリとした見た目になるのは間違いないですが、個人的には省略しない事をおすすめします。
ちなみに私はPublicなども省略せずにきっちり書きたいタイプです。
終わりに
ByRefとByValを適切に使い分けることで可読性を上げることができます。
変数を引数として渡す技術はコードを細分化しようとしたときに必ず直面することになります。
思い通りに受け渡しが出来ると、プログラミングの幅も広がりますよ。
経理で差別化するには?意外と相性が良いVBA
経理の世界で感じた限界
経理職として働いていると、「資格を取った先に何を目指すのか」という壁にぶつかる方は少なくありません。私自身も日商簿記2級までは取得しましたが、その先にある会計士や税理士といった難関資格に挑戦できる環境はなく、自分の実力を考えても現実的ではないと感じていました。
経理の世界には、既に高い専門性を持った人が数多くいます。正直に言えば、簿記一本で勝負しても競争は激しく、頭一つ抜けるのは難しいでしょう。
では、どうやって差別化すれば良いのでしょうか。
資格とスキルの掛け算
そこで私が考えたのが「資格とスキルの掛け算」です。
簿記の知識だけでは他の人に埋もれてしまう。けれども、そこに“もう一つのスキル”を組み合わせれば、自分だけの強みになるのではないかと考えました。
私の場合、そのスキルが VBA(Excelマクロ) でした。
VBAを学び始めた理由
VBAはもともと得意だったわけではありません。
ただ、経理業務と非常に相性が良いスキルであると感じ、「これなら差別化につながる」と思ったのが学び始めたきっかけです。
実際に取り組んでみると、単純作業を自動化できたり、システム間のデータを整形して取り込みやすくできたりと、日常業務に直結する効果がありました。
今ではいくつかの自作マクロを実務で活用できるまでになり、「マクロが使える経理」というポジションを築きつつあります。
経理職におすすめのスキル戦略
経理の専門家と真正面から競う必要はありません。むしろ、「経理+◯◯」という形でスキルを組み合わせることが、実務の現場では強みになります。
例えば、
経理 × ITスキル(VBA、Power Query など)
といった具合に、資格やスキルを掛け合わせれば、自分ならではの立ち位置を築けます。
まとめ
簿記の勉強を突き詰めて「トップ」を目指すのは簡単ではありません。しかし、資格取得の経験や、そこに新しいスキルを加える工夫によって、経理職として差別化する道は十分にあります。
経理の基礎を押さえた上で、もう一つ武器となるスキルを持つ──それがこれからの時代に求められる「強い経理」への近道ではないでしょうか。
【Excel VBA】リファクタリングについて
マクロは一回作ったら終わり?
VBAで作品を作った後改良が必要になった事はありませんか?
もし無駄があったり非効率なコードの場合、改良や機能の追加等の改修はとても難しいものになります。
しかし、効率的で整理されたコードであればどんな機能なら追加できるかの見通しが立ちやすくなるのです。
一度完成したと思っても、もう一度最初からコードを見直すことをオススメします。
リファクタリングとは
突然リファクタリングなんて用語を使っていますが要するに作り直しのことです。
私はVBAの学習を始めてから3年ほど経つのですが、最近では作品と呼べるレベルのものが数件出来上がっています。
しかし過去の作品のコードを見返してみると何度も同じことをしていたり無駄なことをしていたり…。
もう少し改良の余地があるように思えてきます。
より質の高い作品にしたいという思いが強いのです。
リファクタリングするメリット
そもそも何故リファクタリングがしたいのかというと下記のようなメリットがあるからです。
- コードが読みやすくなる。(可読性)
- あとから機能を追加しやすい(拡張性)
- 最新の知識を反映できる。
- ゼロスタートでは無いのでより完成度の高いコードが書ける。
こんなところだと思います。
結局は過去と比べたら今の自分が一番賢いんです。
リファクタリングすることで1度目に書いたコードのムダや弱点を見つけることが出来ます。
一番賢く、経験値を積んだ今の状態でこれらを排除しましょう!
管理しやすいコード
私が実際に行っているコードの書き方を紹介します。
重要なのはメインとサブを分けることです。
メインとは全体の処理の流れを記述するプロシージャです。
メイン側にはサブのプロシージャを呼び出すためのコードや共通して使用する変数などを用意しておき、サブプロシージャに引数として渡す形にします。
このような構造にすることで処理の大まかな流れをメインプロシージャに記述し、詳細な処理に関しては最小単位のサブプロシージャをいくつも用意してブロックを組み上げるように作っていくのがオススメです。
ここで必ず必要となるのが引数の値渡しや参照渡し(ByValやByRef)という技術ですがこれらについては別の記事で解説したいと思います。
はじめてのExcel VBA ― 業務を時短するシンプルマクロ入門
1. はじめに
Excelは表計算だけでなく、VBA(Visual Basic for Applications)を使うことで業務を自動化できます。
「プログラミングは難しそう…」と思う方も多いですが、VBAはExcelさえあれば環境構築不要で始められ、日常業務にすぐ役立つのが魅力です。
私は元々プログラミングに興味を持っていてC言語やJAVA、Pythonなどを軽く勉強してみましたが、どれも環境構築が必要で「これを覚えても会社のPCに導入できない」という理由から本格的な導入は断念しました。
Excelは私も関数しか使えませんでしたが、簡単なマクロを覚えるだけで、1時間以上かかっていた作業を数分に短縮できました。
2. VBAを始める準備
-
開発タブの表示
-
Excelの「ファイル」→「オプション」→「リボンのユーザー設定」で「開発」をチェック。
-
-
マクロの保存形式
-
.xlsm(マクロ有効ブック)で保存。
-
3. 最初のマクロを作ってみよう
ここでは、シート上のデータを一括で体裁整える簡単な例を紹介します。
Sub 体裁を整える()
'A1から表全体を自動調整
Cells.Select
Cells.EntireColumn.AutoFit
'見出し行を太字に
Rows(1).Font.Bold = True
'背景色を淡いグレーに
Rows(1).Interior.Color = RGB(217, 217, 217)
MsgBox "体裁を整えました!"
End Sub
ポイント
-
Cells.Selectで全体を選択 -
AutoFitで列幅調整 -
Font.Boldで太字化 -
RGBで色指定
4. VBAでできることの例
-
毎月のデータ集計を自動化
-
同じ形式のファイルをまとめて処理
-
PDF化やメール送信の自動化
-
データ入力のミス防止(バリデーション)
5. 初心者がつまずきやすいポイント
-
参照範囲の指定(
CellsとRangeの違い) -
変数宣言の習慣化(
Option Explicitを使う) -
エラー発生時の原因調査(
F8キーでステップ実行)
6. 最後に
VBAは「小さく始めて徐々に拡張」が成功のコツです。
まずは日常のちょっと面倒な作業を見つけて、それを自動化してみましょう。
一度成果を出すと「次はこれも自動化できるかも」という発想がどんどん湧いてきます。
プログラミングの実態は関数と同じだと思っています。
何か情報を渡せば処理をして返してくれる。
処理は分岐と繰り返しを用意することができる。
どんなプログラムも結局はこれが実態です。