Подведу итог темы:
Вероятно существуют два варианта раскрыть комбик.
1. Послать ему сообщение с помощью SendMessage
2. Выделить комбик и послать нажатие клавиши Down
Первый вариант у меня закончился на получении хендла нашего комбика. Увы, пока не нашел как.
Вариант 2:
Создадим панель инструментов и комбик на ней
- Код: Выделить всё
Set MyBar = CommandBars.Add(ПанельИмя, msoBarTop, , True)
Set MyBox = MyBar.Controls.Add(msoControlComboBox)
MyBox.Caption = "Название"
MyBox.OnAction = "КомбикДействие"
Чтобы раскрыть комбик, можно сделать так:
- Код: Выделить всё
MyBox.SetFocus
SendKeys "{DOWN}"
Но если требуется сделать это из процедуры
КомбикДействие, то вероятно будет ошибка
'SetFocus' of object '_CommandBarComboBox' failed . Обойти можно к примеру так:
- Код: Выделить всё
Sub КомбикДействие()
...
...
...
Application.OnTime Now + TimeValue("00:00:01"), "РаскрытьСписок"
End Sub
Sub РаскрытьСписок()
MyBox.SetFocus
SendKeys "{DOWN}"
End Sub
Ну вот как то так. Буду рад если кому нибудь пригодится. Все сказанное выше справедливо для Excel 2003.