2013-07-24 9 views
1

я добавил пользовательский правый пункт меню Нажмите кнопку для перехода в контекстном меню, когда в ячейке в соответствии с:Excel VBA Выполнить пользовательский пункт меню при редактировании в ячейке

Private Sub AddTheMenuItem(myCommandBar As Office.CommandBar, caption As String, action As String) 
    Dim NewControl As CommandBarButton 

    Set NewControl = myCommandBar.Controls.Add(Type:=msoControlButton, temporary:=True) 

    With NewControl 
     .caption = caption 
     .OnAction = action 
     .Picture = Application.CommandBars.GetImageMso("WrapText", 16, 16) 
     .Style = msoButtonIconAndCaption 
    End With 

End Sub 

пунктов меню отображаются нормально, но ни один сустейнов. Я просто получаю звук «ping». Я пробовал играть с использованием peekmessage, и я вижу правую кнопку, которая вызывает меню, но не щелчок левой кнопкой мыши, который выбирает пункт меню. Похоже, что сообщение не передается ни на какой ожидаемый код VBA.

Я полагаю, что способ, которым я пытаюсь достичь этого, не сработает, но я хотел бы получить какие-либо советы относительно способа заставить это работать. Для моего приложения важно предоставить пользователям соответствующие пункты меню, когда внутри ячейки.

Спасибо заранее,

AZ

+0

Работает отлично для меня. Вы уверены, что суб, который вы пытаетесь достичь, находится в соответствующей области? – dennythecoder

+0

Когда я изменяю меню «снаружи» «Ячейка», субтитры выполняются нормально, только когда я пытаюсь и вызывать новую правую кнопку мыши, щелкнув меню, находясь внутри ячейки, тогда я получаю только звук «ping». – user2615484

+0

Спасибо, Лайман Кодер, не могли бы вы быть более откровенными. Я изменил меню правой кнопки «Формула-Бар», которое активно, когда вы редактируете содержимое ячеек, а субсайты, которые я пытаюсь выполнить, являются общедоступными и видимыми, но не будут выполняться - я просто получаю звук «ping» из Excel , – user2615484

ответ

0

Сделать уверенны ваше значение OnAction является строка или она будет запущена в меню настроек. .OnAction = подимени потерпит неудачу тогда .OnAction = «подимени» будет успешным до тех пор, как Sub подимени
находится в модуле объекта, а не в листе или рабочей книги модуля.

Смежные вопросы