コンテキストメニューからマクロを実行する

ユーザーに好きなタイミングでマクロを実行させるとき、ショートカットキーを割り当てるということもできますが、普通は何かをマウスでクリックすると思います。
例えば開発メニューから表示できるマクロリストやシートに貼り付けたコマンドボタンなどがあると思います。
一つの選択肢として、シートの右クリックメニュー(コンテキストメニュー)がふさわしい場合もあると思うので、その場合の基本的なコードは以下の通りです。

対象のシートのコード

対象のシートがSheet1の場合、そのシートのコードに以下を記述します。

右クリック実行前イベント

コードの説明は、コメント欄の通りです。
ポイントとしては、右クリックのたびにメニューが増えないように、毎回右クリックしたときに最初にリセットしています。
なお、Mac版 Excel 2016ではエラーにはなりませんが、FaceIdで指定したアイコンは表示されません。

シートのDeactivateイベント

他のシートでは表示されないようにリセットします。

対象ブックのコード

複数開いている時に他のブックでは表示されないようにリセットします。

対象シートを右クリックすると

このようになり、選択するとOnActionで指定したマクロが実行されます。ただし、引数は渡せません。

関連記事