powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как открыть ComboBox?
9 сообщений из 9, страница 1 из 1
Как открыть ComboBox?
    #38110708
Bagir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно создать свою панель инструментов.
Добавить туда выпадающий список ComboBox.
Код: sql
1.
2.
Set MyBar = CommandBars.Add(ПанельИмя, msoBarTop, , True)
Set MyBox = MyBar.Controls.Add(msoControlComboBox)


А вот как раскрыть его, так же как раскрываем кликом мышки по треугольничку или нажатием кнопки Down после выделения ComboBox'а?
Чтобы список открылся и показал что в нем есть. Программно конечно.
...
Рейтинг: 0 / 0
Как открыть ComboBox?
    #38110747
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
MyBox.SetFocus
SendKeys "{DOWN}"
...
Рейтинг: 0 / 0
Как открыть ComboBox?
    #38110840
Bagir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю, такой вариант у меня был на заметке. Значит другого пути просто нету. Сейчас попробовал так, но почему то налетаю на ошибку Method 'SetFocus' of object '_CommandBarComboBox' failed
Пока не понял где грабли. SetFocus исполняю из процедуры активной формы. Форма не модельная. Но из Immediate работает. Попробовал так:
Код: sql
1.
Application.OnTime Now + TimeValue("00:00:01"), "РаскрытьСписок"



Код: sql
1.
2.
3.
4.
Sub РаскрытьСписок()
 CommandBars.Item(ПанельИмя).Controls.Item(3).SetFocus
 SendKeys "{DOWN}"
End Sub



Работает.
Но дело тут вовсе не в том, что запускаю из формы. если на форме прикрутить обычную кнопку и повесить на нее
Код: sql
1.
2.
3.
4.
Private Sub CommandButton3_Click()
 CommandBars.Item(ПанельИмя).Controls.Item(3).SetFocus
 SendKeys "{DOWN}"
End Sub


то все работает.

Покопаю еще, может придет счастье ))
...
Рейтинг: 0 / 0
Как открыть ComboBox?
    #38110848
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bagir,

А для каких целей вообще требуется раскрыть список на панели программно? Я просто не могу найти толкового применения данному действию.
...
Рейтинг: 0 / 0
Как открыть ComboBox?
    #38110884
Bagir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поверьте, в моей задаче это очень нужно. После ввода в это поле например фамилии или имени, и нажатия Enter , программно поле заполняется (.add) совпадениями из базы. Далее удобно нажатием вниз выбрать нужного видя весь список. А вообще не представляя задачу целиком, довольно трудно понять для чего это надо, тут не поспоришь ))

До чего дошел:
до сих пор понятия не имею, почему вылетает эта ошибка. Ругается даже если сделаю так:
Код: sql
1.
Application.Run "РаскрытьСписок"


а вот
Код: sql
1.
Application.OnTime Now, "РаскрытьСписок"


отрабатывает нормально.
...
Рейтинг: 0 / 0
Как открыть ComboBox?
    #38114672
Bagir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Как открыть ComboBox?
    #38114802
Bagir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подведу итог темы:
Вероятно существуют два варианта раскрыть комбик.
1. Послать ему сообщение с помощью SendMessage
2. Выделить комбик и послать нажатие клавиши Down
Первый вариант у меня закончился на получении хендла нашего комбика. Увы, пока не нашел как.
Вариант 2:
Создадим панель инструментов и комбик на ней
Код: sql
1.
2.
3.
4.
Set MyBar = CommandBars.Add(ПанельИмя, msoBarTop, , True)
Set MyBox = MyBar.Controls.Add(msoControlComboBox)
MyBox.Caption = "Название"
MyBox.OnAction = "КомбикДействие"


Чтобы раскрыть комбик, можно сделать так:
Код: sql
1.
2.
MyBox.SetFocus
SendKeys "{DOWN}"


Но если требуется сделать это из процедуры КомбикДействие , то вероятно будет ошибка 'SetFocus' of object '_CommandBarComboBox' failed . Обойти можно к примеру так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub КомбикДействие()
  ...
  ...
  ...
  Application.OnTime Now + TimeValue("00:00:01"), "РаскрытьСписок"
End Sub

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



Ну вот как то так. Буду рад если кому нибудь пригодится. Все сказанное выше справедливо для Excel 2003.
...
Рейтинг: 0 / 0
Как открыть ComboBox?
    #38116921
DMK67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я открываю комбобокс в офисе 2007 при помощи комбинации alt-down. Просто down- не прокатывает. т.к. при этом просто выбирается первое значение в комбобоксе, а сам комбобокс не открывается...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub OPEN_ComboBox_TIP_FIGUR()
'Открываем комбобокс с наименованием фигур и выбираем первое значение
Dim AltKey As String
AltKey = "%"
UF_CALC_3_177.ComboBox_TIP_FIGUR.SetFocus
Application.Wait Now + TimeValue("00:00:01")
SendKeys AltKey & "{DOWN}", False
SendKeys "{DOWN}"
End Sub
...
Рейтинг: 0 / 0
Как открыть ComboBox?
    #38122470
Bagir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все верно, находясь в режиме ввода текста, при нажатии Down будет просто выбран следующий элемент, а комбик не раскроется. Вот для этого и делаю вначале .SetFocus
При этом выделяется весь комбик, и Down уже раскрывает его.
А за Alt+Down спасибо! в режиме ввода текста в комбике эта комбинация действительно раскрывает его.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как открыть ComboBox?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]