HOME>IT関連>VBA>vba-beginning

VBA エディタ(VBE)起動から、マクロ呼び出しまで

VBA

こんにちは。すたユキです。

※今回は、これまでExcel等でマクロを使ったことがないという、VBA初心者向けの内容です。

マクロを触ったことがない方にとっては、どこかハードルが高く、手をつけにくい印象があると思いますが、意外とやってみると何とかなるものです。

まずはExcelを開いて、上のメニューに開発タブがあるかの確認から見ていきましょう。
既に開発タブがある方は次の項目に進んでくださいね。

開発タブの表示

下の画像のように表示されていればOKです。

表示されていなければ、下の画像のように、
ファイル」⇒「オプション」⇒「リボンのユーザー設定」の順にクリックし、
オプション画面を開きます。

またはAlt TOの順にキー入力しても開けます。

のように、「開発」のチェックボックスにチェックを入れます。
これで、開発タブが表示されました。

マクロ有効ブック(.xlsm)で保存する

Excelでマクロを実行するには、マクロ有効ブックで保存する必要があります。
これについてはいくつか形式がありますが、今回は広く一般的に使われるxlsm形式で保存することにしましょう。

名前を付けて保存ダイアログを開いて、ファイルの種類を上の画像のようにxlsm形式を選択します。
すると、左側のようなアイコンで保存されます。※右側が通常の形式です。

VBE(エディタ)を開いて初期設定

では、エディタを開いてみましょう。ExcelにはVBA専用のエディタであるVBEが付属しているので、何も追加インストールすることなく、マクロを作り始めることが出来ます。

開発タブを開くと、左端にVisual Basicと書かれたボタンがあります。
これをクリックすることでVBEを起動できます。

またはAlt+F11を押す。

上のようなウィンドウが表示されたと思います。

このウィンドウ内でVBAのコードを書いたりユーザーフォームを作成したりして、
自分オリジナルのマクロを作成することができます。

さっそく作ってみよう!っと言いたいところですが、
最初におすすめの設定を紹介しておきます。
今回は、特に重要な箇所だけ紹介しますので、慣れてきたら色々試してみてください。

まずは、ツールメニューからオプション画面を開いてください。

左側が初期設定だったかと思います。これを右のように変更します。
自動構文チェックチェックを外し変数の宣言を強制するチェックを入れます。

下記に簡単に説明しておきます。

自動構文チェック

誤った構文で記述しようとすると、その都度アラート画面を表示して知らせてくれるというもの。下画像のように修正候補も教えてくれます。

少し慣れるまではチェックを入れておくのもありですが、
慣れてくるとなかなか鬱陶しかったりします。
ちなみに、これが無くても、デフォルトで構文エラーは赤字で表示してくれます。

変数の宣言を強制する

宣言していない変数を使おうとするとエラーになるというもの。

なぜかデフォルトではこのチェックが外れていて、何でも宣言せずに使えてしまうので、
ちょっと誤字脱字が混じっていても何もエラーなく実行されてしまったりします。

これについての詳細は、次の節で説明します。

実際にコードを書いて実行してみる

それでは、実際にコードを書いてみましょう。

Sheet1(各シート)に書くことも可能ですが、制約が多いので、
特に理由がなければ標準モジュールに書くようにしましょう。
ということで、まずは標準モジュールを追加します。

これで標準モジュールが追加されました

新たに標準モジュールのツリーが生成され、Module1が追加されていますね。
同時に右の枠内にコードウィンドウも表示されます。

もし、表示されていない場合は、プロジェクトエクスプローラー内で、
表示したいモジュール(今回はModule1)をダブルクリックしてください。

この先頭行に記載されているOption Explicit(エクスプリシット)ですが、これが前節で紹介した変数の宣言を強制するオプションです。オプション画面でチェックを入れている場合は、先頭行に自動で挿入されます。(手入力も可)

また、Module1という名前(オブジェクト名)は下にあるプロパティウィンドウで変更できます。
とりあえずTestなどに変更してみても、そのままでもどちらでも構いません。

プロパティウィンドウが表示されていない場合は、上の表示メニューから選択するかF4キーを押してください。

今回はTestモジュールに名前を変えてみます。

では、ここで何か処理を書いてみましょう。

先程開かれたコードウィンドウ内に下記のように記載してみてください。

選択しているセル内の値メッセージボックスで表示するという処理です。

実はこれくらいの簡単な処理であれば変数も宣言せず、
MsgBox ActiveCell.Valueのみの1行で実行できてしまうのですが、
今回はあえて変数宣言して、何をしているのかを明示してみました。

では、実行してみましょう。
Excelのシート画面に戻ってください

メッセージボックスに表示したい文字列(数字でも構いません)を任意のセルに入力し、そのセルを選択しておきます。

例として、C2セルにtestと入力しておきます。

準備ができたら、開発タブマクロをクリックします。

先程作成したMyTestを選択して実行ボタンをクリックします。

このように表示されれば成功です。

また、先程のマクロ画面オプション設定ショートカットキーを登録することもできます。

ここで任意のキーを設定することができます。

Shiftを押しながら入力するとCtrl+Shiftにすることも可能です。

マクロの保存先は、とりあえず作業中のブックで問題ないでしょう。

普段よく使うCtrl+Cなどを登録するとマクロが優先されてしまうので、
普段使用しないショートカットキーを登録するようにしましょう。
なお、ショートカットを削除する場合は、入力欄を空欄にしてOKにするだけです。

本記事の主な内容はここまでとなります。

いかがでしょう。何となく作業の効率化ができるイメージが湧いて来ましたか?

最後に、変数の宣言を強制する理由について、具体例を紹介します。

下記コードを見てください。

間違い探しです。一見先程と同じ処理に見えますが、これを実行すると下の画像のように空っぽのメッセージボックスが表示されます。

もうお分かりいただけましたね。実は最後の値だけマッサージになっちゃってるんですね。
あるあるですね。

Option Explicitを削除すると、これでも何のエラーもなく実行されてしまうため、うまく動かない原因を特定するのに時間がかかりそうです。

こんな数行の処理ならまだしも、1000行を超える処理だったらと考えると。。。

宣言を強制しておけば、誤字で書かれた変数は、実行時にエラーとして表示されるのですぐ発見できますが、強制されていない場合はスルーされてしまいます。

以上です。

最後まで読んでいただきありがとうございました。

コメント