スタイル

マクロの実行は、イベントプロシージャで行う

VBAを実行するための方法には、いろいろあります。

もちろんイベントプロシージャを勧めるサイトもあります。

VBAアセットは、「一見普通のエクセルのシートに見えるが、その裏でマクロが働いて、便利な機能を発揮している」という「羊の皮をかぶった狼」的なプログラムを理想としています。
このため、基本的には、VBAはイベントプロシージャで実行するようにしています。

そもそも、VBEは、イベントプロシージャの使用を前提にしているとも思えるのです。
VBEのコードエディターの一番上に何やらリストのようなものがあります。シートモジュールの場合、ここにイベントが最初から準備されているのです。
これは、当然、ここを使いたくなりますよね。

また、セルをダブルクリックしたり、選択した場合に起動するイベントプロシージャを用いれば、シート上にボタンを配置したのとほぼ同じ操作でマクロを起動することができます。
シート上に「実行」と入力したセルを配置して、それをダブルクリックした場合にマクロが起動するようにすればよいのです。

もちろん、イベントプロシージャの使用が適当ではない場面もあります。
特にマクロをアドインとして使用する場合にイベントプロシージャを用いることは、裏技を使わない限りできないようです。
そもそも、シートモジュールにコードが記載された、そのシート自体のイベントに応じて起動するマクロが、そのままでは他のシートのイベントに応じて起動するわけがないのです。

ただし、私の経験では、マクロはそもそもそのワークシート自体でしか使用しない場合が多いですし、マクロをテンプレートに組み込んでおけば、他のワークシートでもイベントプロシージャが使えますので、イベントプロシージャを使えない場合は、ほとんどないと思っています。

コメント

タイトルとURLをコピーしました