実行されたメニューを取得する


独自のメニューを作ったり、ツールバーに自作のマクロを登録したときなど、どのコマンドが実行されたかを知りたい場合があります。実行されたメニューやボタンを調べるには次のようにします。

メニューの調べ方

ここでは「メニューバーに独自のメニューを追加する」でご紹介したメニューのプロシージャ UnProtectSheet を使って解説します。

実行されたメニューのキャプションは、CommandBars コレクションの ActionControl プロパティを調べるとわかります。

Sub UnProtectSheet()
    MsgBox CommandBars.ActionControl.Caption
End Sub

ActionControl プロパティは実行されたコントロールを返しますので、キャプションを知りたいときは Caption プロパティを、何番目のコントロールかを知りたいときは Index プロパティなどを、メニューがチェックされているかどうかを知るには State プロパティを調べます。

コマンドボタンの調べ方

ツールバーに追加したボタンも同じ ActionControl プロパティで知ることができます。新しく [ユーザー設定 1] というツールバーを作り、ボタンを 1 つ追加します。

このボタンに先の UnProtectSheet を登録してクリックしてみます。結果は下の通りです。

親オブジェクトの調べ方

コントロールの Parent プロパティを調べると、そのコントロールが配置されている親オブジェクトがわかります。たとえば、上で作成したツールバーのボタンに次のプロシージャを登録すると、ツールバーの名前を知ることができます。

Sub UnProtectSheet()
    MsgBox CommandBars.ActionControl.Parent.Name
End Sub

ツールバーには Caption プロパティがなく、名前は Name プロパティです。