Страницы: 1
RSS
Имя нажатой надписи (Label)
 
Приветствую!  
Для CommandButton1_Click можно написать  
a = ActiveControl.Name  
 
А как это сделать для Label1_Click ?
 
м.б. Caption
 
Или просто a = Label1
 
Не просто.  
Мне нужно узнать, это Label1 или Label2!  
 
Перечитав первый пост понял, что не достаточно описал хотелку. Сорри!  
 
Хотелка: прописать одну процедуру для всех Label, и различать нажатую по номеру.
 
Я обычно в этом случае не особо заморачиваюсь по поводу универсальности кода, и пишу что-то вроде этого:  
 
Private Sub Label1_Click(): CheckLabel 1: End Sub  
Private Sub Label2_Click(): CheckLabel 2: End Sub  
Private Sub Label3_Click(): CheckLabel 3: End Sub  
Private Sub Label4_Click(): CheckLabel 4: End Sub  
 
Sub CheckLabel(ByVal n)  
MsgBox "Label" & n  
End Sub  
 
 
Ну а если хочется сделать нормально - надо использовать классы  
10 строк кода - и никаких проблем, обработчики для отдельных Label не понадобятся.  
Пример модуля класса (только для чекбоксов, и там много лишнего кода):  
http://excelvba.ru/XL_Files/Sample__26-10-2011__18-26-49.zip
 
Или так  
 
Private Sub Label1_Click(): CheckLabel Label1: End Sub  
Private Sub Label2_Click(): CheckLabel Label2: End Sub  
Private Sub Label3_Click(): CheckLabel Label3: End Sub  
Private Sub Label4_Click(): CheckLabel Label4: End Sub  
 
Sub CheckLabel(n)  
MsgBox n.Caption  
End Sub
 
Сейчас и использую почти такое решение, а с классами связываться в данном случае не хочется.
 
Судя по ответам EducatedFool и Казанский вопрос себя исчерпал!  
 
Спасибо!
 
Выложил пример использования классов для таких целей на сайте: <BR>http://excelvba.ru/code/ClassModulesForUserform Вдруг кому пригодится.
Страницы: 1
Читают тему
Наверх
Loading...