Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2013, 14:04   #1
Bagir
Пользователь
 
Регистрация: 10.10.2012
Сообщений: 19
По умолчанию Как открыть ComboBox?

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

Чтобы список открылся и показал что в нем есть. Программно конечно.
Bagir вне форума Ответить с цитированием
Старый 15.01.2013, 15:11   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Обычно открываю так: Alt-‹буква› — попробуйте записать в макрос.

‹буква› — эта та буква, которая в названии команды подчёркнута (перед ней стоит &).
Код:
SendKeys "%{в}"
Увы, это не записывается как макрос — пришлось делать в лоб.

Последний раз редактировалось Sasha_Smirnov; 15.01.2013 в 15:24. Причина: код.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 15.01.2013, 16:35   #3
Bagir
Пользователь
 
Регистрация: 10.10.2012
Сообщений: 19
По умолчанию

Это мой собственный ComboBox и на моей панели инструментов. Так что Alt-‹буква› не поможет. Есть вариант
Код:
Private Sub CommandButton3_Click()
 CommandBars.Item(ПанельИмя).Controls.Item(3).SetFocus
 SendKeys "{DOWN}"
End Sub
Но опять же с использованием SendKeys

Последний раз редактировалось Bagir; 15.01.2013 в 17:03.
Bagir вне форума Ответить с цитированием
Старый 17.01.2013, 23:49   #4
Bagir
Пользователь
 
Регистрация: 10.10.2012
Сообщений: 19
По умолчанию

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

Последний раз редактировалось Bagir; 18.01.2013 в 08:19.
Bagir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как открыть? scroyler Работа с сетью в Delphi 1 16.07.2012 19:44
Webbrowser и combobox: сделать чтобы в combobox-е оставалась история посещенных сайтов uasya2 Общие вопросы Delphi 6 06.03.2011 20:24
Открыть Combobox по Enter pskovn Общие вопросы Delphi 4 02.09.2009 14:48
Как открыть файл? Xnarcotic Общие вопросы Delphi 4 14.06.2009 11:51
Как открыть порт? Анатолий74Rfckb Работа с сетью в Delphi 5 04.02.2007 19:38