Страницы: 1
RSS
Узнать ActiveControl.Name зная только имя UserForm, Получение имени активного контрола зная только имя UserForm
 
Уважаемые Формумчане, доброго времени суток.
Прошу Вашей помощи, ибо Гуууугл не помогает.

Код
Public NameForm as string
Private Sub ComboBox1_Change()
    NameForm = me.name ‘Запоминаем имя формы
    Test  ‘ Запуск другой процедуры
End sub

Код
Sub Test ()
    For i2 = 1 To ThisWorkbook.VBProject.VBComponents.Count ‘ вычисляем номер нужной UserForm
       If ThisWorkbook.VBProject.VBComponents(i2).Name = NameForm Then
          Exit For
       End If
    Next

    Dim TempForm As Object   ' переменная для временной формы
    Dim NameActCont as string ‘ ' переменная для имени активного контрола

    Set TempForm = ThisWorkbook.VBProject.VBComponents(i2) ' Засовываю в переменную нужную UserForm
    NameActCont = TempForm.ActiveControl.Name ' Вот тут и происходит беда. 438 ошибка 
 End sub

По ходу переменная  TempForm не хранит в себе все методы и свойства переданной формы.

Вопрос, можно ли узнать имя активного контрола зная только имя userform?
 
Вопрос: а зачем знать имя активного контрола формы? Цель конечная какая? В зависимости от измененного комбобокса сделать что-то особое? Или другая какая?
Изменено: Дмитрий(The_Prist) Щербаков - 19.12.2019 17:44:38
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Написать универсальную процедуру для фильтрации (отсеивания) данных в combobox по вводимому значению в этот же combobox.
Изменено: Sergoff - 19.12.2019 18:17:53
 
Цитата
Sergoff написал:
Получение имени активного контрола
:qstn:
Активным элементом формы всегда будет тот элемент, на который вы нажимаете или к которому вы идете с клавишей TAB
 
Цитата
ocet p написал:
Активным элементом формы всегда будет тот элемент, на который вы нажимаете
Смею вас уверить, что вы сильно заблуждаетесь.
Изменено: RAN - 19.12.2019 19:25:03
 
Цитата
Sergoff написал:
для фильтрации (отсеивания) данных в combobox по вводимому значению в этот же combobox
Так для этого есть событие ComboBox Change, которое Вы уже используете и которое использовать правильнее. Но есть подозрение, что задачу Вы описали неверно. Может Вам классы нужны? Работа с модулями классов
Чтобы не вычислять каждый раз имя комбобокса и создать одну обработку на все?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Sergoff написал:
Засовываю в переменную нужную UserForm
Вероятно, правильнее сказать пытаетесь засунуть. Ибо по факту
Код
Set frmTmp = UserForm1
'frmTmp :  Object/UserForm1

Set TempForm = ThisWorkbook.VBProject.VBComponents.Item(i2) ' Засовываю в переменную нужную UserForm
'TempForm : Object/VBComponent
Изменено: RAN - 19.12.2019 21:27:38
 
Цитата
RAN написал:
Set frmTmp = UserForm1'frmTmp :  Object/UserForm1
я так тоже пробовал. не получается.
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Может Вам классы нужны?  Работа с модулями классов Чтобы не вычислять каждый раз имя комбобокса и создать одну обработку на все?
Что-то вроде того.
Тогда буду смотреть в сторону классов.
Спасибо.
 
Цитата
Sergoff написал:
я так тоже пробовал
Вообще-то, я показал не как пробовать, а почему не получается.
У вас TempForm не форма.
Изменено: RAN - 19.12.2019 22:10:54
 
Цитата
RAN написал:
Вообще-то, я показал не как пробовать, а почему не получается.У вас TempForm не форма.
сори, не так понял.
 
Ваша проблема решается примерно так

Да простят меня великие и могучие М.
Изменено: RAN - 19.12.2019 22:46:45
 
Цитата
RAN написал:
Ваша проблема решается примерно так
ОоООооо... Я вроде так пробовал, но у меня ничего не получилось. Видимо что-то я упускал.
Спасибо Вам огромное. )))
Страницы: 1
Наверх