HOME > 即効テクニック > Excel VBA > メニューバー・ツールバー関連のテクニック > 右クリックメニューにリストを追加する

即効テクニック

メニューバー・ツールバー関連のテクニック

右クリックメニューにリストを追加する

(Excel 97/2000/2002/2003)
セルの右クリックメニューにコマンドを追加するには、次のようにします。

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では、エディットボックスとドロップダウンリストボックスを追加しても表示されないようです。