独自のメニューを追加する ~Excel VBA
エクセルVBAで独自のメニューを追加するには
Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)
を使います。
Rem 独自メニューを追加します Sub AddOriginalMenu() Dim MainMenu As Variant, SubMenu1 As Variant, SubMenu2 As Variant Dim cbc As CommandBarControl Dim ret As VbMsgBoxResult Rem 既にメニューが存在しているか確認 For Each cbc In Application.CommandBars("Worksheet Menu Bar").Controls If cbc.Caption = "独自メニュー" Then ret = MsgBox("独自メニュー は既に存在しています", vbOKOnly, "確認") Exit Sub End If Next Rem 独自メニューを追加する Set MainMenu = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup) MainMenu.Caption = "独自メニュー" Rem 独自メニューのサブメニューを追加しクリックでMyMacro1プロシージャを実行する Set SubMenu1 = MainMenu.Controls.Add With SubMenu1 .Caption = "MyMacro1を実行(&A)" .OnAction = "MyMacro1" .BeginGroup = False .FaceId = 3 '表示するアイコンで3はフロッピーアイコン End With Rem 独自メニューのサブメニューを追加しクリックでMyMacro2プロシージャを実行する Set SubMenu2 = MainMenu.Controls.Add With SubMenu2 .Caption = "MyMacro2を実行(&B)" .OnAction = "MyMacro2" .BeginGroup = False .FaceId = 23 '表示するアイコンで23は開くアイコン End With End Sub Rem 追加した独自のメニューを削除します。 Sub DeleteOriginalMenu() Dim ret As VbMsgBoxResult Application.CommandBars("Worksheet Menu Bar").Controls("独自メニュー").Delete ret = MsgBox("独自メニュー を削除しました", vbOKOnly, "確認") End Sub Sub MyMacro1() Dim ret As VbMsgBoxResult ret = MsgBox("MyMacro1が実行されました", vbOKOnly, "確認") End Sub Sub MyMacro2() Dim ret As VbMsgBoxResult ret = MsgBox("MyMacro2が実行されました", vbOKOnly, "確認") End Sub