Sub AddMenu()
Dim NewM As Variant, NewC As Variant
''新しいメニューを追加する
Set NewM = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)
NewM.Caption = "新しいメニュー(&C)"
''オリジナルコマンドを追加する(1)
Set NewC = NewM.Controls.Add
With NewC
.Caption = "保護解除(&U)"
.OnAction = "UnProtectSheet"
.State = False
.BeginGroup = False
End With
''オリジナルコマンドを追加する(2)
Set NewC = NewM.Controls.Add
With NewC
.Caption = "参照元/先のトレース(&P)"
.OnAction = "Precedents"
.BeginGroup = True
.FaceId = 450
End With
End Sub
Sub UnProtectSheet()
With Application.CommandBars("Worksheet Menu Bar").Controls("新しいメニュー(&C)"). _
Controls("保護解除(&U)")
.State = Not .State
End With
End Sub
State プロパティに True
を設定するとチェックマークがつきます。チェックマークはアイコンの位置に表示されますので、チェックマークを付けたいメニュー項目には FaceId
プロパティを設定してはいけません。上記の例では、メニューを追加するとき State プロパティに False
を設定しています。つまり、チェックマークの初期値は「なし」という例です。前回の状況を引き継ぐような場合は、State
プロパティの値をレジストリなどに保存しておくといいでしょう。