即効テクニック |
セルの右クリックメニューにコマンドを追加するには、次のようにします。Sub Sample1() With CommandBars("Cell").Controls.Add(Type:=msoControlButton) .Caption = "Button" .OnAction = "myMacro" End With End Sub Sub myMacro() MsgBox "Hello" End SubSample1を実行すると、右クリックメニューに[Button]コマンドが追加され、クリックするとmyMacroが実行されます。 追加したコマンドを削除するには、Deleteメソッドを実行します。Sub Sample2() CommandBars("Cell").Controls("Button").Delete End Subメニューには、コマンドを実行するだけでなく、現在の状況を表すものがあります。 たとえば、Excel 2003の[書式]-[ふりがな]-[表示/非表示]などです。 この[表示/非表示]メニューは、選択したセルでふりがなが表示されていると、コマンドの左側が押された状態になります。 このように、メニューを押された状態にするには、StateプロパティにTrueを設定します。 次のコードは、[Button]コマンドが押された状態にします。Sub Sample3() CommandBars("Cell").Controls("Button").State = True End Subコマンドにアイコン(FaceId)が設定されていない場合は、チェックマークが表示されます。 アイコンが設定されていると、アイコンの背景が押されたようになります。 こうしたメニューの場合、実行するたびに、ONだったらOFFに、OFFだったらONへと状況を反転させるのが一般的です。 そのとき、現在のStateプロパティの状態をIfやSelect Caseで調べる必要はありません。 True/Falseを反転させるNot演算子を使うと便利です。Sub myMacro() With CommandBars("Cell").Controls("Button") .State = Not .State MsgBox "現在の状況:" & Cbool(.State) End With End Sub