Как открыть ComboBox?

Программирование на Visual Basic for Applications
Bagir
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.10.2012 (Ср) 17:06

Как открыть ComboBox?

Сообщение Bagir » 15.01.2013 (Вт) 13:18

Можно создать свою панель инструментов.
Добавить туда выпадающий список ComboBox.
Код: Выделить всё
Set MyBar = CommandBars.Add(ПанельИмя, msoBarTop, , True)
Set MyBox = MyBar.Controls.Add(msoControlComboBox)

А вот как раскрыть его, так же как раскрываем кликом мышки по треугольничку или нажатием кнопки Down после выделения ComboBox'а?
Чтобы список открылся и показал что в нем есть. Программно конечно.

Bagir
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.10.2012 (Ср) 17:06

Re: Как открыть ComboBox?

Сообщение Bagir » 17.01.2013 (Чт) 22:51

Подведу итог темы:
Вероятно существуют два варианта раскрыть комбик.
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.

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Как открыть ComboBox?

Сообщение Template » 19.01.2013 (Сб) 0:05

Bagir писал(а):...
Вероятно существуют два варианта раскрыть комбик.
1. Послать ему сообщение с помощью SendMessage
...
Первый вариант у меня закончился на получении хендла нашего комбика. Увы, пока не нашел как.


Дык, это не комбик, а RichEdit20W


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57

    TopList