
上図のように、UserForm 上のコントロールで独自のショートカット メニューを使う方法です。ここでは、リストボックスを右クリックしたときにショートカット メニューを表示してみます。
Dim myBar As Variant ''(1)
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
If Button = 2 Then myBar.ShowPopup ''(5)
End Sub
Private Sub UserForm_Initialize()
Dim i As Long
For i = 1 To 5
ListBox1.AddItem "アイテム " & i ''(2)
Next i
Set myBar = CommandBars.Add(Position:=msoBarPopup, Temporary:=True) ''(3)
With myBar
With .Controls.Add ''(4)
.Caption = "先頭に移動"
.OnAction = "UpToHead"
.FaceId = 594
End With
With .Controls.Add
.Caption = "1つ上に移動"
.OnAction = "UpToOne"
.FaceId = 595
End With
With .Controls.Add
.Caption = "1つ下に移動"
.BeginGroup = True
.OnAction = "DownToOne"
.FaceId = 596
End With
With .Controls.Add
.Caption = "最後に移動"
.OnAction = "DownToTail"
.FaceId = 597
End With
End With
End Sub