セルの右クリックメニューにコマンドを追加するには、次のようにします。
Sub Sample1()
With CommandBars("Cell").Controls.Add(Type:=msoControlButton)
.Caption = "Button"
.OnAction = "myMacro"
End With
End Sub
Sub myMacro()
MsgBox "Hello"
End Sub
Sample1を実行すると右クリックメニューに[Button]コマンドが追加され、クリックするとmyMacroが実行されます。
追加コマンドを削除するには、Deleteメソッドを使います。
Sub Sample2()
CommandBars("Cell").Controls("Button").Delete
End Sub
右クリックメニューに追加できるのはボタンだけではありません。
メニューに、文字列を入力できるエディットボックスを追加するには次のようにします。
Sub Sample3()
With CommandBars("Cell").Controls.Add(Type:=msoControlEdit)
.Caption = "Edit"
.OnAction = "myMacro2"
End With
End Sub
Sub myMacro2()
MsgBox CommandBars("Cell").Controls("Edit").Text
End Sub
実行すると、セルの右クリックメニューにエディットボックスが追加され、文字列を入力してEnterキーを押すと、OnActionプロパティで設定したプロシージャが実行されます。
入力した文字列は、追加したコントロールのTextプロパティで取得できます。
ほかにも、ドロップダウンリストボックスを追加することも可能です。
Sub Sample4()
With CommandBars("Cell").Controls.Add(Type:=msoControlDropdown)
.AddItem "Data1"
.AddItem "Data2"
.AddItem "Data3"
.Caption = "List"
.OnAction = "myMacro3"
End With
End Sub
Sub myMacro3()
MsgBox CommandBars("Cell").Controls("List").Text
End Sub
追加したドロップダウンリストボックスにデータを追加するには、AddItemを使います。
なお、Excel 2007では、エディットボックスとドロップダウンリストボックスを追加しても表示されないようです。