VBAはじめの一歩


Excelのマクロがまったく初めてという方のために、マクロってこんな感じだよ、という雰囲気をご紹介いたします。ここに書かれている通りにやれば、誰でもマクロを書いて、実行できます。また、なぜそうするのかという簡単な解説もしますが、詳細なところまでは書けませんので、あらかじめご了承ください。

なお、本コンテンツでは、Excel 2013の画面で説明しますが、基本的には他のバージョンでも一緒です。

Excelを起動する

まず、Excelを起動してください。

起動すると、まだ保存されていない新規ブックが用意されます。この新規ブックには、便宜上「Book1」などの名前が付けられています。

Excelを起動できない人は、残念ですが、マクロやVBAを体験するには早すぎます。まず、Excelについて学習してください。

VBEを起動する

Excelの、ワークシートが表示されている状態でAltキーを押しながら[F11]キーを押します。このAlt+F11は、絶対に覚えてください。

Alt+F11を押すと、VBE(Visula Basic Editor)が起動します。

VBEは、マクロを書いたり編集したり、書いたマクロを実行したりする、Excelとは別のウィンドウです。

標準モジュールを挿入する

マクロは標準モジュールに書きます。本当は、標準モジュールではないモジュールに書くこともできますが、最初は何が違うか分からないでしょうから、その違いを学習するまでは「マクロは標準モジュールに書く」と覚えてください。ちなみに、インターネットや雑誌、書籍などに掲載されているサンプルのマクロは、特に説明がなければ「標準モジュールに書く」という前提で記述されています。

VBEの[挿入]メニューをクリックして[標準モジュール]を実行します。

実行すると、標準モジュール「Module1」が挿入されます。

先頭に「Option Explicit」と記述されていない人もいるでしょうけど、あまり気にしないでください。

モジュールとは、マクロを書く場所のことです。メモ帳だと思えばいいでしょう。ここにマクロを記述していきます。

マクロを書く

半角の小文字で「sub」と入力します。

subの後ろに、半角スペースを1つ入力し、続いてマクロの名前を入力します。何でもいいです。

Enterキーを押すと、いくつかの単語が青色に変わり、マクロ名の後ろに空の括弧が挿入されます。この括弧、いったい何だろうと疑問に思う人が多いですが、これは、この中に何かを書くと何かができるという仕組みのために用意されている括弧です。消すことはできませんから、気にしないでください。また、下の方に「End Sub」が自動的に入力されます。これも決まりですから、深く考えないでください。マクロは、この「Sub マクロ名()」と「End Sub」の間に記述します。

この「Sub マクロ名()」から「End Sub」までをプロシージャと呼びます。一般的に「マクロを作る」「マクロを実行する」と言いますが、正確には「プロシージャを作る」「プロシージャを実行する」ということになります。

コードを書く

まず、Tabキーを押して、カーソルを右に4文字分移動します。

これをインデントと呼びます。インデントは、してもしなくてもマクロの動作には関係ありませんが、だからといって「やらなくてもいい」というレベルのものではありません。絶対に、絶対にインデントしてください。絶対にです。なぜ、インデントをしなければいけないのか。つまり、マクロを書くとはどういうことかなどは、長くなるのでここでは割愛します。お知りになりたい方は、私のセミナーを受講してください。

さぁ、コードを書きましょう。まず、cells(2,1).value = 100と入力します。すべて小文字で入力してください。スペースの位置など細かいことは、あまり気にしないでけっこうです。

cells(2,1)の「,」はカンマです。また、valueの前にあるのは「.ピリオドです。間違えないように注意してください。

Enterキーを押すと、いくつかの単語で、先頭が大文字に変わります。

マクロを実行する

今記述したマクロ(プロシージャ)を実行してみましょう。プロシージャを実行するには、実行したいプロシージャの中にカーソルを置きます。下の、反転している範囲内であれば、どこでもいいです。

下図のように、プロシージャの外にカーソルがあってはいけません。

プロシージャの中にカーソルを置き、VBEのツールバーにある右向き緑三角ボタンをクリックします。これが、マクロの実行ボタンです。また[F5]キーでも実行できますので、慣れてきたら試してみてください。

実行すると、プロシージャに記述したコードが実行されます。今回記述した「Cells(2, 1).Value = 100」は、アクティブシートのセルA2に100を代入しろという意味です。

このあとは

マクロを作るとは、こういう作業です。

このようなマクロ(プロシージャ)を、必要なだけモジュールに記述していきます。

マクロ(プロシージャ)とは、「Sub マクロ名()」と「End Sub」の間に描く、自分で考えたストーリーです。ワークシートのセルを上から順番に見ていって・・・A列の数値と、B列の数値を比較して・・・もしA列の数値が大きかったら・・・B列のセルを赤く塗りつぶして・・・のように。このストーリーは、自分で考えなければなりません。自分で小説を書くようなものです。他人が書いた文章(コード)をコピペして寄せ集めても、自分のストーリーは作れません。マクロに、正しいも間違いもありません。必要なのは、自分なりの根拠です。

また、マクロとは、Excelに対する指示や命令です。したがって、指示の仕方が分からなくては何もできません。指示の仕方とはつまり、どう書いたら、Excelがどう動くかということです。それらは、学習しなければ分かりません。インターネットや雑誌、書籍などには、たくさんのサンプルコードが掲載されていますが、それらはみな、それらを書いた人が、自分なりの根拠を持って書いたコードです。あなたのストーリーに、そのまま使えるとは限りません。マクロで最も重要なポイントは、どうすればできるかではなく、なぜ、そうすべきなのかという根拠です。

マクロを作成するとは、そういう作業だと認識してください。