Страницы: 1
RSS
Set MyControl = Сам себе режисер
 
Здравствуйте. Будте добры,
имеем:

Private MyControl As MSForms.control
Dim N As Long

Private Sub Label1_MouseMove(...)
Set MyControl = UserForm1.Label1
End Sub
Private Sub CommandButton234_Click()
Set MyControl = UserForm1.CommandButton234
End Sub
'и т.п.

ВОПРОС: Возможно ли составить уникальные фразы, чтобы:
1.любой Элемент в процедурах UserForm'ы автоматически определял сам себя
2.автоматически получить его (порядковый) №.
Наподобие:
Private Sub Элемент№_Click()
Set MyControl = UserForm1.Me
N = №
End Sub
 
То есть чтобы когда CommandButton1 выполняла CommandButton1_Click, то в CommandButton1_Click определялось, что именно CommandButton1 её вызвал?
There is no knowledge that is not power
 
Так точно. Что именно этот Control, и что именно 1.
Тип Элемента, что именно:  Me.Controls("CommandButton" & 1) или If TypeOf MyControl Is MSForms.CommandButton- определать не обязательно.
 
ActiveControl частично может помочь.

Но лучше, наверное, привлечь классы. Отслеживать по событию Click и записывать в глобальную переменную имя контрола(или назначать объект).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
ПРИМ. От MyControl потребуются Свойства Элемента в других Sub'ах.

Спасибо, Дмитрий. Подозревал  классы. Но,  они 'с лету'  пока мне не даются. Про ActiveControl  - можно куда-нибудь меня 'послать'?
 
OFF. C какой целью VBA в выражении '...As MSForms.control '  н а ч а л  писать слово 'control ' c маленькой буквы? Намек от Excel, что пора прекращать задавать неприличные вопросы?
 
Здесь надо привлекать классы. Правда, могут не все события обрабатываться (например, у TextBox события BeforeUpdate, AfterUpdate, Enter и Exit.)
There is no knowledge that is not power
 
Спасибо, Johny. Если есть возможность, можно привести Пример.Ligth (на основе первого поста)? Я.Default.полный
 
Цитата
Я.Default.полный
Кто вы???

Цитата
Пример.Ligth
Что такое «Ligth»?
неужели по-русски сложно написать? (тем более, если с английским напряг)


Сергей Кр,  примеров предостаточно
Например, здесь:
http://excelvba.ru/code/ClassModulesForUserform

Может, лучше вы на примере покажете, что нужно сделать, - а мы попробуем подправить\доделать код?
А то, надо-то вам, а делать приходится нам...
 
Пример.
Нажмите два раза на Label - и текстовое поле справа от Label очистится
There is no knowledge that is not power
 
Да. Отличные примеры.
Спасибо, Игорь.
Спасибо, Johny.
 
There is no knowledge that is not power
Страницы: 1
Наверх