У меня есть лента с кнопкой, которую я хочу вызвать с помощью обычной подпрограммы в макросе.
Public Rib As IRibbonUI
Sub RibbonOnLoad(ribbon As IRibbonUI)
On Error GoTo this
Set Rib = ribbon
If Application.Version > 12 Then
Rib.ActivateTab "tabColtar"
End If
this:
End Sub
это кнопка на надстройке, которую я хочу вызвать:
Sub NeedToCallThis(control As IRibbonControl)
...
end sub
это моя подпрограмма, из которой я хочу вызвать/запустить/запустить кнопку:
Sub CallingAddinButton()
...how to call the "NeedToCallThis" ribbon button?
end sub
Я не думаю, что это то же самое.
Если вы так не думаете, отредактируйте свой вопрос, чтобы он был более четко обозначен как отдельная проблема.
Было бы полезно показать код в NeedToCallThis
Sub... особенно, чтобы понять, используется ли и как объект IRibbonControl
(т. е. control
).
@JohnM это просто обычный макрокод. Мне нужно научиться вызывать этот элемент управления «NeedToCallThis» из обычного макроса.
Ответ зависит от того, используете ли вы объект IRibbonControl
внутри NeedToCallThis
... "обычный макрокод" не помогает прояснить это.
IRibbonControl загружает надстройку с кнопкой «NeedToCallThis». Я также хочу вызвать ее из макроса.
Предполагая, что вы не ссылаетесь на параметр в Sub (например, используете оператор switch
для control.ID
, чтобы Sub выполнял разные действия в зависимости от того, какой элемент управления на ленте его вызвал), вы можете просто передать его Nothing
, например:
Sub CallingAddinButton()
NeedToCallThis Nothing
End Sub
(Примечание: все свойства объектов IRibbonControl
доступны только для чтения — поэтому даже если вы Dim ircTemp AS IRibbonControl
создадите новый/виртуальный IRibbonControl
, вы не сможете присвоить значение ircTemp.id
для передачи с NeedToCallThis ircTEMP
)
Этот вопрос похож на: Имитировать с помощью макроса щелчок по пользовательскому элементу ленты. Если вы считаете, что это другое, отредактируйте вопрос, поясните, чем он отличается и/или как ответы на этот вопрос не помогают решить вашу проблему.