アドインが機能してはならない場合の処理。

次はプロシージャの呼び出し方法です。複数のプロシージャにいろいろ作り込んだ機能を盛り込んでいくのですが、イベントプロシージャから起動されるばかりではありません。オペレータがその場で所望するプロシージャを起動させるようにしなければなりません。
一般的なマクロの起動方法は以下の通りです。

起動方法 内容
メニューバーの「ツール」、「マクロ」から起動 ここから起動させられるように作ると、シートやワークブックなどでの起動の可不可のコントロールができません。間違って起動させることができてしまうので不正動作する可能性があります。
但し、起動されたプロシージャで判断することは可能です。
フォームの「ボタン」をシートに貼り付けて起動させる 「ボタン」が表示されているシ-トから起動されるようになりますが、同時にメニューバーの「ツール」、「マクロ」からも起動できてしまうので、上記と同じです。
ツールボックスの「ボタン」をシートに貼り付けて起動させる 上記の問題はなくなるが、シートに「ボタン」をクリックした時のイベントプロシージャを記述しなければならず、機能追加等ではワークブック側がマクロの記述の更新対象になってしまう可能性が多分に発生してしまいます。
アドイン側の初期処理でツールバーを作成して、そこから起動させる 私は現在ではほとんどこの方法にしています。
アドイン側だけでツールバーのボタンの表示/非表示がコントロールできる上、ツールバー上のコントロールから呼ばれるプロシージャは「Private」で良いので「マクロ」にプロシージャ名が表示されません。
但し、同じアドインを呼ぶワークブックを同時に複数開く可能性がある場合は、ツールバーの名称をワークブックによって変えておかなければなりません。このため、ツールバーは操作上で作成してアドインのブックに保存させるのではなく、マクロの記述で作成するようにします。ツールバーの名称は通常は呼び元ワークブック名の拡張子抜きにします。
アドインを呼び出したワークブックがアクティブでない、プロシージャが機能するシートが選択されていないなど、時点時点でプロシージャが機能して良い時と、良くない時があるわけですが、上の表の「1」~「3」のような固定的な起動方法では、呼ばれたアドイン側のマクロの先頭で、表示されているワークブックやシートの状態を判断して動作可否を判断しなければなりません。

これにくらべ、「4」のツールバー方式なら、ワークブック側のウィンドウとシートの切り替えイベントでツールバーの状態を制御(EnabledVisible)するようにしておけば、マクロ自体の起動そのものを抑制できます。(この章の最後にツールバーを持つアドイン動作のサンプルを用意しております。)