VBAって何?(=「マクロ」?)

現在では特に区別はありませんが「マクロ」は本来は古い呼び方だったのだと思います。でもリボン等には「マクロ」の名前が残っているので一般的には「マクロ」で良いのでしょう。
VBAは「Visual Basic for Applications」の略で Microsoftの標準的な開発言語の一つである「Visual Basic」のOffice版ということになります。 「マクロ」は慣用的な名称で、VBAは正式名称です。「for Applications」というのは「Microsoft Office」等の汎用アプリケーションに共通して実装するような意味であり、 Excelのみならず、Word,Access,PowerPoint,Visio,Outlook,FrontPageなどにも実装されています。
私の個人的見解ですが、「マクロ」はいわゆる「手続き記録」のようなイメージがあります。
Excel以外の「表計算ソフト」ではこの「手続き記録」機能を「マクロ」と言ったり「カタログ」と言ったりします。 昔、まだWindowsが全盛になる以前は国産の「表計算ソフト」もいくつかあり、NEC製のものを使っていましたが、 「カタログ」という呼び名で全く「手続き記録」機能でした。
VBAをそういうイメージで捉えている方は、 このサイトや他のVBAをサポートしているサイトを 見ていただくと「そんなものではない」ことが理解できると思います。
VBAって何?という方は、まず「自動記録」から入って見ましょう。「自動記録」は、Excelの「手続き記録」機能で、これから「記録終了」のボタンを押すまでのExcel上での操作をまるごと記録してしまうという機能です。記録した内容は、開いているそのワークブックのモジュールとして記録されており、保存しておけばそのワークブックを開いて「ツール」メニューの「マクロ」からいつでも起動できます。
単なる「手続き記録」機能と違うのは、「自動記録」で記録したものもVisual BasicのソースコードとしてVBEで修正や追加記述が自在にでき、さらにExcelの操作からの記録では実現できない処理を直接Visual Basicのソースコードを記述することで実現できることです。

VBA」か「マクロ」かこのサイトでの呼び名を統一しようと思ったのですが、リボンの開発タブのボタンが「マクロ」だったり、VisualBasicだったりでうまく行きません。自動記録の意識を除外して「同じもの」と思って下さい。

戻る 先頭に戻る

VBAが作れるようになるまでの手順

さて、マクロ未経験の人でも「マクロが使えたら」を考える人、あるいは「マクロで何ができるのか」を疑問を持つ人が大勢いると思います。定型定性的で繰り返し行なう仕事は、マクロかマクロを含めた仕組みを導入することで人的作業を軽減させることができるはずです。

以下は、VBAでシステム化が実現できる可能性の高い事案の例です。 (但し、処理自体は高難度かも知れません)

これらはVBAでプログラミングができれば実現することができるであろう事案をイメージしていただくための例です。
VBAを学ぶにあたっては、こういった「実現したいこと」のイメージを持って、それに必要なことを軸として学ぶことが重要だと思います。



さて、このページから始まる「VBA基本」の節では、マクロ初心者の人向けにマクロはどういった手順で身につけるかを説明します。(順序については私の私見ですが)
ここでの説明は、入門書と違い「手取り足取り」で説明するわけではありませんが、「どういう手順」で「どのようなことに着目」していけば良いかを説明していきます。なお、ヘルプに書いてあることを反芻して説明することはしませんので、出てくるオブジェクト、メソッド、プロパティについて解らない場合は都度、ヘルプで確認するようにして下さい。また、サンプルの事例、記述方法は代表的なものを挙げているだけで、全ての説明を隅から隅まで網羅するものではありません。

なお、操作上の説明については「開発」タブが表示されている前提としております。
Excelのオプション

リボンに「開発」タブが表示されていない場合は、Excelのオプションを開いて、 「開発」タブにチェックを付けておいて下さい。
Excelのデフォルトでは「開発」タブにチェックは付いていません。



Excelのオプション

このように「開発」タブが表示されます。
この操作は1回のみで良く、次回以降Excelを利用する時にも「開発」タブが表示された状態になります。

戻る 先頭に戻る

VBA基本」での説明範囲や順序

以下のような項目を順に説明していきます。「これは解っている」という所は飛ばしていただいて結構です。



自動記録(マクロの記録)から始める。
[目的]まず、自動記録(マクロの記録)で「マクロに手を付けてみる」
マクロについて全く使用経験なしの人向けに、自動記録をやってみるところから、記録したコードを再利用できるようにするところまで説明しています。 この章では細かい記述文法には触れずに流れだけを説明し、また、その後のコード整理、簡単な改変や自動記録だけでは実現できないことなどを説明します。
作成したマクロの動作の確認方法
[目的]マクロのコードの動作検証方法を理解する。
作成したマクロの動作検証(動作確認)方法を説明します。これは重要なことであり、これを知らないままマクロを作ろうとすると「作った・動かした・ダメだった」の結果だけになってしまいます。長いコードの場合などに途中のどこの段階でどうなったのかなどをトレースすることで記述の間違いを見つけて修正する必要があるので、その検出方法は早めに体得しておく必要があります。ここでの説明は最低限必要なもので、総合的な検証の手段については次章を含めて理解する必要があります。
VBEの使い方
[目的]コードエディタ(VBE)の操作方法を理解する。
VisualBasicEditor(VBE)の操作方法を説明します。前章で触れている検証手段の他の検証に利用されるツールや、コード記述上での補助ツール、ちょっとしたワンポイントも含めて説明します。
BASIC言語の基礎
[目的]判断・分岐・繰り返しを記述するBASIC言語を理解する。
自動記録がただの手続き記録なので、応用を利かせるための「判断・分岐・繰り返し」のロジックの書き方を簡単な例を挙げて説明します。 個々の構文の解説はありませんが、実装時の組み立てを学んでいきます。 この他、変数に関しての基本的な説明があります。
Excel特有のオブジェクト、メソッド、プロパティの理解
[目的]Excelのワークブック・ワークシート・セルの参照・操作を理解する。
ブック間、シート間の参照や操作となると、これも自動記録の範囲の理解では難しくなります。 この部分を説明します。

※この辺まで理解できたら、1人で調べながらマクロが作れるようになります。


シート上のセルの参照・転記
[目的]シート上でのセルの参照・転記を理解する。
セルやセル範囲の参照・更新で、そのセルやセル範囲を取得する部分を説明します。 例えば自動記録では、本来「値転記」の1アクションで良いものが「コピー」+「貼り付け」という複数アクションになってしまいます。
ユーザーフォームについて
[目的]ユーザーフォームの作り方を理解する。
定型的な業務のエントリーに利用できるユーザーフォームの基本的な作成方法を説明します。 多くの項目を持った一覧表の1行について、必要項目が網羅されているか等のチェックを行なってOKならシート側に展開させるなどを目的としています。
計算式とVBAではどっちが良い!?
[目的]計算式との役割分担を理解する。
マクロと計算式の用途としての「棲み分け」について説明します。
機能分割と他プロシージャの呼び出し
[目的]機能分割と他プロシージャ呼び出しについて理解する。
複雑な機能を実装していく場合などのために、機能分割して部品化する方法と「本体」「部品」間の呼び出し方法を説明します。 なぜ「機能分割」が必要なのかについても説明します。
作ったVBA(マクロ)の起動方法は?
[目的]マクロの起動方法を考える。
マクロを実際に運用面で実行させる方法を説明します。
エラー処理について
[目的]エラー処理を理解する。
エラーの現象や制御について説明します。マクロを作成する上で重要なことです。 大別して記述が不備で実行できない時のエラーと、実行したら記述の想定と違ったなどで発生するエラーがあります。 エラーが発生したのにOKをクリックしたらそのまま処理が進んでしまうなどは絶対に避けなければなりません。 マクロで実装した処理に理解がない人に実行させるような運用環境であれば、エラーの通知方法なども検討する必要があります。
仕様要件からコードの組み立てを考える。
[目的]仕様要件からコードの組み立てる考え方を理解する。
ここまでの個々の説明項目が解ったところで、一番肝心なロジックの組み立ての考え方をサンプルを使って説明します。 内容の骨子は上記の「機能分割と他プロシージャの呼び出し」と一部重複します。
初心者のよくある疑問・間違いや誤解
[目的]初心者が陥りやすいポイントを理解する。
本章は記述順には関係がない「ワンポイント集」です。 さし当たって想定できる初心者が陥りやすいポイントと、実際に質問をいただいたものなどを構成してサンプルを使って説明します。
ここまでこなせたら、ベテランの領域なのかも知れません。
ご自分の技量状態と相談しながら、必要なところから始めてみて下さい。



逆にマクロの作成が「こんなに大変なことなのか」と思われる方がいるかも知れません。 使わない項目はスキップしても良いのですが、そういう分類はおそらく「ユーザーフォーム」くらいです。
作成予定のマクロを利用する先を考えて下さい。 「自分だけ」「所属部署」「特定部署」「所属会社の全部署」「ネットで一般公開」などにより影響範囲、責任範囲が異なります。 上記の各項目を読んでいただければ何が必要なのかが判ると思いますので必要なところを学習して臨んで下さい。