機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > 今さら聞けないVBA

マクロとVBAの違い



インターネットの個人サイトだけでなく、書籍や雑誌、パソコンスクールや有料のセミナー、ひどいときはMicrosoftの公式ページでさえ、マクロVBAという用語が混在して使われています。いや、白状しますが、当サイトだって、厳密に区別して使っているわけではありません。一応少しは意識していますけど(^^;

正確にいうと、マクロとVBAはまったく別です。

「マクロ」とは、Excelや他のアプリケーションなどを、あらかじめ決めた手順で制御する機能の名前です。Excelの機能名ですから「グラフ」「ピボットテーブル」「オートフィルター」などと同じ立場です。

一方の「VBA」は、Visual Basic for Applicationsの略称で、マクロ機能で作成する手順を記述するときに使うマクロ言語の名称です。実はExcelには、VBAではないマクロ言語もあります。試しに、シート見出しを右クリックして[挿入]を実行してください。



ちなみにVBEは、Visual Basic Editorの略で、マクロを作成したり編集したりする、専用アプリケーションの名称です。
また、これも混同する人が多いのですが、一般的にVBというと、これはプログラミング言語のVisual Basicを指します。VB(Visual Basic)は、Microsoftが開発・販売しているプログラミング言語で、Windows上で動作する○○.exeや○○.dllなどの実行形式ファイルを作成できます。このVB(Visual Basic)の言語仕様をベースにして、ExcelやWordなどのアプリケーションで使用するマクロ言語としてカスタマイズしたのがVBA(Visual Basic for Applications)です。

Excelのマクロ言語はVBA(Visual Basic for Applications)です。VBまたはVisual Basicとは呼びません。たまに、VB(Visual Basic)の質問掲示板などに、Excel VBAの質問をしている投稿を見かけますが、そうした掲示板で回答している方の多くは「VBのベテランや専門家」であって、「Excel VBAのベテランや専門家」とは限りません。Excel VBAを自在に使いこなすには、何よりもExcelの知識が必要です。VB(Visual Basic)に精通しているからといって、必ずしもExcel VBAに詳しいとは限りませんので、質問をするときは、掲示板を間違えないようにしてください。あ、もちろん、VBとVBAの両方に精通している方もいますけど。

「マクロ」はExcelの機能名、「VBA」はマクロのコードを作るときに使う言語の名称です。厳密には違う意味ですが、実際のところ、マクロを作成するときはVBAを使うことになるので、両者は同じ意味として使われているのが実情です。あえて区別して使うのは、逆に無理があるかもしれませんね。

意味が通じればどちらを使ってもいいのですが、ちょっとそれは違うのでは?という解説をときどき目にします。それは、

  • マクロ記録で操作を記録すること→マクロ
  • VBEでコードを手書きすること→VBA

という解釈です。個人サイトだけでなく、パソコン雑誌などでも、こういう書き方をしているところがありますね。雑誌に書いてあるからといって、必ずしも正しいとは限りません。その記事を書いたライターや編集者が、VBAを正しく理解していなければ、間違ったことが書かれることもあります。

これは明らかに違います。こうした誤った認識をすると「私は、マクロはできるけどVBAはできない」など、トンチンカンな言い方をしかねません。マクロ記録で記録されるのはVBAのコードですし、VBEで手書きしたコードを実行するのはマクロ機能です。混乱の元ですから、できれば、こうした間違った解釈だけは世間に広めて欲しくないですね。

なお、Accessでは「旧マクロ機能」と「VBAを使ったマクロ機能」の2つが実装されています。そのため、旧マクロ機能のことを「マクロ」と呼び、VBAによるマクロ機能のことを「VBA」と呼ぶことがあるようです。この場合は「マクロはできるけどVBAはできない」という言い方も、まんざら間違ってはいません。しかし、AccessとExcelは違います。先に書いたように、現在のExcelにも、VBAではないマクロ機能が残っています。しかし、いまどきExcel 4.0のマクロを使う人は、ほとんどいないでしょうから「旧マクロ機能」「新マクロ機能」を区別することは希です。

マクロとVBAを、明確に区別して使い分ける必要はありません。しかし、マクロ→機能の名称、VBA→言語の名称ということを理解していないと、先のように変なことを言いかねません。これは、ネットの掲示板などで嫌われますし、VBAの上級者と話をするときにも困ります。

質問者「○○するには、どうしたらいいですか?VBAではなくマクロでやりたいです」
回答者「はぁ?」

新人「マクロを作ったことはありますけど、VBAはわかんないっす」
先輩「お前な・・・」

みたいな。
こうした概念や用語を正しく理解するのは、第三者と円滑なコミュニケーションを行うために必要です。



このエントリーをはてなブックマークに追加