Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Visual Basic Новый топик    Ответить
 Установить фокус на вкладке ленты  [new]
OxY63rus
Member

Откуда:
Сообщений: 133
Доброго времнеи суток!
На ribbon есть мои кнопки, которые что-то делаю. Одна из кнопок формирует форматированную таблицу (диапазон). Вследствие чего лента excel перескакивает на стандратную вклдаку (Работа с таблицами/Конструктор). Как вернуть фокус на мою вкладку (контрол на моей вкладке Ribbon)?
30 ноя 18, 08:29    [21749359]     Ответить | Цитировать Сообщить модератору
 Re: Установить фокус на вкладке ленты  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1800
OxY63rus,

Насколько знаю из VBA этого не сделать. Но есть метод ActivateTab у самой Ribbon, если брать именно свою Ribbon, которую создали через XML. Можно его попробовать вызывать после выполнения нужных команд.
30 ноя 18, 08:55    [21749385]     Ответить | Цитировать Сообщить модератору
 Re: Установить фокус на вкладке ленты  [new]
OxY63rus
Member

Откуда:
Сообщений: 133
The_Prist, спасибо за совет!
Прописал событие onLoad для CustomUI в XML.
В обработчике события установил глобальной переменной типа IRibbonUI
Public MyRibbon As IRibbonUI

Public Sub Load(Ribbon As IRibbonUI)
   Set MyRibbon = ribbon
End Sub

Далее любом месте кода, где возможно переключение вкладки применяем
MyRibbon.ActivateTab "{Идентификатор_вкладки}"

Вопрос закрыт
30 ноя 18, 09:31    [21749418]     Ответить | Цитировать Сообщить модератору
 Re: Установить фокус на вкладке ленты  [new]
OxY63rus
Member

Откуда:
Сообщений: 133
Подниму свой вопрос снова.
Кто является родителем для MyRibbon?
Я код вынес во внешнюю библиотеку и теперь не могу достучаться до своей ленты.
Передаю в либу экземляр Excel, но ExApp.MyRibbon.ActivateTab не срабатывает.
17 янв 19, 11:33    [21787630]     Ответить | Цитировать Сообщить модератору
 Re: Установить фокус на вкладке ленты  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1800
OxY63rus,

Родитель - Офис. И достучаться извне не получится, надо отлавливать именно событие Ribbon_Load внутри своей библиотеки. Для этого потребуется Office.IRibbonExtensibility, иначе управлять лентой из библиотеки никак не удастся.
17 янв 19, 14:35    [21787908]     Ответить | Цитировать Сообщить модератору
Все форумы / Visual Basic Ответить