Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как повесить событие Click на Label? / 4 сообщений из 4, страница 1 из 1
21.10.2005, 15:58:10
    #33337867
Jetus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повесить событие Click на Label?
Создаю Label програмно:
Код: plaintext
Selection.InlineShapes.AddOLEControl ClassType:="Forms.Label.1"
Как теперь повесить на неё событие Click?


______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
21.10.2005, 19:20:49
    #33338312
Дмит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повесить событие Click на Label?
Private WithEvents lb As Label

Sub qwe()
Set lb = Selection.InlineShapes.AddOLEControl(ClassType:="Forms.Label.1").OLEFormat.Object
lb.Caption = "Надпись"
lb.Name = "lab"
End Sub
Private Sub lab_Click()
.....
End Sub
...
Рейтинг: 0 / 0
14.11.2005, 14:45:43
    #33376821
Jetus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как повесить событие Click на Label?

Я пробовал сделать так как ты сказал, но у меня еще есть вопросы:
1. Обе процедуры должны быть в одном модуле?
2. В стоке "Private WithEvents lb As Label" возникает ошибка, если писать процедуры в простом модуле. Использовать Class Module?


______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
15.11.2005, 09:01:23
    #33377967
Как повесить событие Click на Label?
Вариант 1.

Модуль листа.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private lbl As MSForms.Label

Sub AddLabel1()
    Set lbl = Worksheets("Лист1").OLEObjects.Add _
      (ClassType:="Forms.Label.1").Object
    
    lbl.Name = "Label1"
    lbl.Caption = "Заголовок1"
End Sub

Private Sub Label1_Click()
    MsgBox "AddLabel1!", vbInformation
End Sub

Процедура Label1_Click должна быть явна объявлена в модуле листа.

Вариант 2.

Стандартный модуль.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Sub AddLabel2()
    Dim lbl As MSForms.Label
    Dim vbc As VBComponent
    Dim cm As CodeModule
    Dim i As Integer
    
    Set lbl = ThisWorkbook.Worksheets("Лист1").OLEObjects.Add _
      (ClassType:="Forms.Label.1").Object
    lbl.Name = "Label1"
    lbl.Caption = "Заголовок1"
      
    With ThisWorkbook
        Set vbc = .VBProject.VBComponents(.Worksheets("Лист1").CodeName)
    End With
    
    Set cm = vbc.CodeModule
    
    With cm
        i = .CountOfLines +  1 
        .InsertLines i, "Private Sub " & lbl.Name & "_Click()"
        i = i +  1 
        .InsertLines i, _
        "    MsgBox ""AddLabel2!"", vbInformation"
        i = i +  1 
        .InsertLines i, "End Sub"
    End With
    
    Set cm = Nothing
    Set vbc = Nothing
    Set lbl = Nothing
End Sub

Процедура Label1_Click программно добавляется в модуль листа.

Вариант 3.

Модуль класса.

Код: plaintext
1.
2.
3.
4.
Public WithEvents lbl As MSForms.Label

Private Sub lbl_Click()
    MsgBox "AddLabel3"
End Sub

Стандартный модуль.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub AddLabel3()
    Dim lbl As MSForms.Label
    
    Set lbl = ThisWorkbook.Worksheets("Лист1").OLEObjects.Add _
      (ClassType:="Forms.Label.1").Object
    lbl.Name = "Label1"
    lbl.Caption = "Заголовок1"
    
    Set lbl = Nothing
End Sub

Sub AddEventToLabel1()
    Set cls.lbl = ThisWorkbook.Worksheets("Лист1").OLEObjects("Label1").Object
End Sub

Set cls.lbl надо вызывать вне процедуры AddLabel3 и желательно на Workbook_Open еще вешать, чтобы была актуальна.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как повесить событие Click на Label? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]