「VBAでメニューを追加する最短手順|右クリック・メニューバー・フォームなしで実現」
Excel VBAで「メニューを追加する」方法を、最もシンプルなコードで紹介します。
フォームやUserFormを使わず、右クリックメニューやメニューバーに直接マクロを登録することで、業務効率を劇的に改善できます。
この記事では、初心者でも迷わず実装できるよう、実例コードと注意点を交えて解説します。
エクセル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