Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как открыть ComboBox? - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Как открыть ComboBox?
Bagir Дата: Четверг, 17.01.2013, 23:45 | Сообщение № 21
Группа: Проверенные
Ранг: Участник
Сообщений: 59
Репутация: 15 ±
Замечаний: 0% ±

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

Sub РаскрытьСписок()
  MyBox.SetFocus
  SendKeys "{DOWN}"
End Sub
[/vba]

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

Sub РаскрытьСписок()
  MyBox.SetFocus
  SendKeys "{DOWN}"
End Sub
[/vba]

Ну вот как то так. Буду рад если кому нибудь пригодится. Все сказанное выше справедливо для Excel 2003.

Автор - Bagir
Дата добавления - 17.01.2013 в 23:45
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!