Excel VBA-добавить подменю в пользовательское контекстное меню
Долгое время зритель, первый раз плакат. У меня есть форма с функциями щелчка правой кнопкой мыши, которые прекрасно работают. Я пытаюсь добавить подменю в Главное меню правой кнопкой мыши, чтобы отделить некоторые функции / команды. Мне нужно / нужно вставить раздел, в котором находится "Select Case", однако он показывает только верхнее меню. Не знаю, куда идти дальше. Любая помощь была бы потрясающей
Спасибо :)
P. S. Я бы рад пояснить, если это необходимо.
Sub fzCopyPaste(iItems As Integer)
On Error Resume Next
CommandBars("Custom").Delete
Set PopBar = CommandBars.Add(Name:="Custom", Position:=msoBarPopup, MenuBar:=False, Temporary:=True)
' Add top_menu on Main Popbar: This прекрасно работает
Set top_menu = PopBar.Controls.Add(Type:=msoControlButton)
With top_menu
'.FaceId =
.Caption = "&Some Commands"
End With
Необходимо вставить нижеприведенное подменю(ы) в верхнее меню Но ничего не появляется : не работает
Select Case iItems
Case 1 ' Copy and Paste
Set copy_button = top_menu.Controls.Add(Type:=msoControlButton)
With copy_button
.FaceId = 19
.Caption = "&Copy"
.Tag = "tCopy"
.OnAction = "fzCopyOne(true)"
End With
Set paste_button = top_menu.Controls.Add(Type:=msoControlButton)
With paste_button
.FaceId = 22
.Tag = "tPaste"
.Caption = "&Paste"
.OnAction = "fzCopyOne(true)"
End With
Case 2 ' Paste Only
Set paste_button = top_menu.Controls.Add(Type:=msoControlButton)
With paste_button
.FaceId = 22
.Tag = "tPaste"
.Caption = "&Paste"
.OnAction = "fzCopyOne(true)"
End With
End Select
'Extra top menue(s) ниже здесь : эта работа отлично
Set paste_button = PopBar.Controls.Add(Type:=msoControlButton)
With paste_button
.FaceId = 22
.Tag = "tPaste"
.Caption = "Main POP BAR 2"
.OnAction = "fzCopyOne(true)"
End With
PopBar.ShowPopup
CommandBars("Custom").Delete
End Sub
1 ответ:
Вы устанавливаете
Copy_Button
равнымmsoControlButton
. Если вам нужна кнопка, это правильно. Однако вам нужно меню, поэтому вы должны установить его наmsoControlPopup
. Попробуйте что-нибудь вроде этого:Set Top_Menu = PopBar.Controls.Add(Type:=msoControlPopup) With Top_Menu .Caption = "&Some Commands" Set MySubMenu = .Controls.Add(Type:=msoControlPopup, before:=1, temporary:=True) Select Case iItems Case 1 With MySubMenu .Caption = "Submenu Commands" With .Controls.Add(Type:=msoControlButton, before:=1, temporary:=True) .FaceId = 19 .Caption = "&Copy" .Tag = "tCopy" .OnAction = "fzCopyOne(true)" End With With .Controls.Add(Type:=msoControlButton, before:=2, temporary:=True) .FaceId = 22 .Tag = "tPaste" .Caption = "&Paste" .OnAction = "fzCopyOne(true)" End With End With Case 2 'etc End Select End With
Я удалил раздел "Top_Menu" (первые 3 строки) с нижеприведенным; он добавлял дополнительную кнопку, а затем нужное меню.
Set MySubMenu = PopBar.Controls.Add(Type:=msoControlPopup, before:=1, temporary:=True) With MySubMenu .Caption = "&Some Commands"