VBAオジサンのらくがき帳

#06 マクロの実行方法

2020-09-13 00:00:00

マクロを実行する方法はいくつかあります。

これまでの例のように、開発中はVBエディタのボタンからの実行しますが、VBエディタの開いていない状態での実行方法をご紹介します。

まず開発タブのタブのマクロから名前を選択して実行する方法があります。この画面から実行することもあまり多くないと思います。ただ、オプションより、マクロにショートカットを指定することができますので、頻繁につかうマクロがある場合には登録すると便利かもしれません。

マクロを実行する際に一番よく使われる方法はボタンを準備して、ボタンの押下により実行するという方法ではないでしょうか。ボタンの種類には フォームコントロール と ActiveXコントロール の2種類あり、作成する際にどちらを選んでつかうか迷うことがあります。

わたしの今までみたきた中ではフォームコントロールを使用しているケースの方が若干多かったのではと思います。ActiveXコントロールの方は外見などのカスタマイズ性が高いようです。どちらを使ってもマクロの実行は可能ですが、誰かがつくったマクロをみる場合もあると思いますので、どちらの使い方も知っておくといいと思います。それぞれについてマクロの登録の方法と、コードに移動する方法を下にしめします。

フォームコントロールの場合、ボタンを作成すると、マクロの登録ウィンドウが開きますので、既存のマクロを選択するか、新規作成を選択します。この画面からそのまま編集に進むこともできます。既存のボタンの確認には、右クリックからマクロの登録に進むとボタンに登録されているマクロ名の確認や編集などをおこなうことができます。

ActiveXコントロールの場合、ボタンを作成すると、デザインモードに入ります。ここからボタンを右クリックしてコードの表示を選択、もしくはダブルクリックでマクロの登録にすすみます。既存のボタンの確認をする時には、まずデザインモードをオンにしなくてはいけません。オンになっていないと、右クリックしても何も起こりませんおで覚えておくとよいかもしれません。

その他にはユーザ操作等のイベントに関連して実行するという機能もあります。例えばファイルを開いた時や、値が更新された時に決まった処理を自動で実行することが可能です。

ファイルが開かれた時にマクロを実行するには、まずVBエディタのプロジェクト エクスプローラからThisWorkbookをダブルクリックしコードを開きます。エディタ上部のドロップダウンの右側にWorkbook、左側にOpenを選択します。自動的にサブプロシージャが作成されるので、その中に実行したい処理を追加します。自作したマクロをここから呼び出すこともできます。ドロップダウンのリストを見ると分かるとおりOpen以外にもたくさんのイベントが定義されているのがわかります。

セル値が変わった時に実行する処理も実装が可能です。この場合はThisWorkbookではなくワークシートに対してコードを追加します。(プロジェクト エクスプローラからシート名(Sheet1等)のダブルクリックでコードに移動できます。)

Private Sub Worksheet_Change(ByVal Target as Range)
MsgBox Target.Address & "が変更されました!!" 
End Sub

イベントによるマクロの実行は、気づかないあいだに処理が行われていることがあるので、使い方によっては便利ですが、あまり多用するのはおすすめしません。