Option Explicit
Dim i As Long, r As Long
'メニュー定義
Const Mname1 = "シート振分 (&C)"
Const Mname2 = "リスト振分 (&A)"
Const Mname3 = "シート保存 (&B)"
Private Sub Workbook_Open()
'独自メニュー作成
Dim NewM As Variant, NewC As Variant
r = False
For i = 1 To Application.CommandBars.ActiveMenuBar.Controls.Count
If Application.CommandBars.ActiveMenuBar.Controls.Item(i).Caption = Mname1 Then r = True
Next i
If r = False Then
Set NewM = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, Temporary:=True)
NewM.Caption = Mname1
NewM.BeginGroup = True
NewM.TooltipText = "ヒント表示"
'メニューその1
Set NewC = NewM.Controls.Add
With NewC
.Caption = Mname2
.OnAction = "実行するマクロ名"
.BeginGroup = False
.FaceId = 1548
End With
'メニューその2
Set NewC = NewM.Controls.Add
With NewC
.Caption = Mname3
.OnAction = "実行するマクロ名"
.BeginGroup = False
.FaceId = 271
End With
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'独自メニュー削除
With Application.CommandBars.ActiveMenuBar
For i = 1 To .Controls.Count
If .Controls.Item(i).Caption = Mname1 Then .Controls(Mname1).Delete
Next i
End With
End Sub