Страницы: 1
RSS
Как из нескольких комбобоксов на форме выбрать активный комбобокс
 
Приветствую!

На форме планируется несколько комбобоксов - как по кнопке "Получить результат" взять в работу именно активный комбобокс?
Должна быть, наверно, какая то конструкция, типа:
IF combobox_1 активный THEN берем значение combobox_1 и работаем с ним
ELSE combobox_2 активный THEN берем значение combobox_2 и работаем с ним
ELSE combobox_3 активный THEN берем значение combobox_3 и работаем с ним
...
ENDIF
Изменено: Alexban65 - 09.09.2018 19:10:23
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
 
Alexban65, у формы есть свойство ActiveControl
 
ActiveControl.Name?
 
Проверил так, MsgBox UserForm.ActiveControl.Name - дает немного не то.
UserForm.ActiveControl  дает название кнопки(CommandButton1) - она действительно активная в момент последнего нажатия.
Нет ли каких вариантов для именно комбобоксов?
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
 
Цитата
Alexban65 написал:
MsgBox UserForm.ActiveControl.Name - дает немного не то.
А можно "немного не то" расшифровать? Не говорите загадками ))
Код
Private Sub ComboBox2_Enter()
    MsgBox Me.ActiveControl.Name
End Sub
 
Прошу прощения, видимо сформулировал недостаточно ясно...

Мне же нужно организовать примерно такой алгоритм:
На форме несколько комбобоксов и кнопка "Получить результат", по нажатию КНОПКИ надо как то перебрать ВСЕ комбобоксы на форме,
выяснить какой комбобокс был последний пользованный, и обработать его(взять его значение).

Вот как смог, если вкратце...))
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
 
Записывайте вход в каждый КомбоБокс в одну переменную - имя последнего останется в ней. И цикл не нужен. Сколько их на форме?
 
И ежели на нескольких форумах одновременно пишете, информируйте
 
Так то идея неплохая и логичная - с записью в переменную каждого входа в комбобокс.
Я уже целую неделю штурмую VBA, именно штурмую...)) И некоторые вещи, и даже терминология, не совсем укладываются в голове...))
Контролов будет 6.
Если есть пример, дай, изучу, будет понимание
Изменено: Alexban65 - 09.09.2018 21:12:48
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
 
Я к Вам на ВЫ, а Вы мне "тыкаете"... Или мы знакомы?
 
Alexban65, в свойствах кнопки установите TakeFocusOnClick=False, тогда ActiveControl сохранит ссылку на тот контрол, который был активным до нажатия кнопки. Например попробуйте
Код
Private Sub CommandButton1_Click()
  MsgBox ActiveControl.Name
End Sub
 
Алексей, есть шанс, что между последним КомбоБоксом и нажатием на кнопку, фокус был, например, в каком-нибудь ТекстБоксе )
 
Цитата
Казанский написал:
Private Sub CommandButton1_Click()  MsgBox ActiveControl.NameEnd Sub
Так то идея тоже неплохая. Тоже стоит попробовать.
На форме кроме комбобоксов и двух кнопок("Получить результат" и "Выход") пока ничего не планируется.
Цитата
Юрий М написал:
Я к Вам на ВЫ, а Вы мне "тыкаете"... Или мы знакомы?
Если где то "тыкнул" по невнимательности - извините...))
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
 
Цитата
Alexban65 написал:
Цитата Казанский  написал:Private Sub CommandButton1_Click()  MsgBox ActiveControl.NameEnd Sub
Так то идея тоже неплохая. Тоже стоит попробовать.
Проверил-работает...)
Для частного случая, как этот, подходит идеально.
Я так понимаю что фокус на кнопку не переводится и на ней ActiveControl не срабатывает - это значит что действует предыдущий ActiveControl...
Но у Юрия М, с идеей записи в переменную, более точное и общее решение(хотелось бы пример...)
Великий и могучий утес, сверкающий бой, с ногой на небе, живущий, пока не исчезнут машины.
Страницы: 1
Наверх