Тема: События на програмно созданном control'е

Здравствуйте. Подскажите как "повесить" событие на програмно созданном control'е?
те создаю Frame при клике на UserForm:
Private Sub UserForm_Click()
Dim NewCtrl As Control
Set NewCtrl = Controls.Add("Forms.Frame.1", comb)
NewCtrl.Left = 5
NewCtrl.top = 10
NewCtrl.width = 15
NewCtrl.Height = 20
NewCtrl.Caption = ""
End Sub

А как на вновь появившийся Frame повесить событие например при Click?

Re: События на програмно созданном control'е

Вот такой код вроде должен создать процедуру для Frame1_Click()..

Private Sub UserForm_Click() 
Dim vbpr
Dim Code As String
Dim NextLine As Long
Dim NewCtrl As Control
Set NewCtrl = Controls.Add("Forms.Frame.1", "Frame1")
NewCtrl.Left = 5
NewCtrl.top = 10
NewCtrl.Width = 15
NewCtrl.Height = 20
NewCtrl.Caption = ""
Set vbpr = Application.VBE.ActiveVBProject.VBComponents.Item("UserForm1")
Code = "Private Sub Frame1_Click()" & vbNewLine
Code = Code & "    Msgbox ""Òåêñò""" & vbNewLine
Code = Code & "    Stop" & vbNewLine
Code = Code & "End Sub"
NextLine = vbpr.CodeModule.CountOfLines + 1
vbpr.CodeModule.InsertLines NextLine, Code
End Sub 

Re: События на програмно созданном control'е

код создается:

Private Sub Frame1_Click()
    MsgBox "Òåêñò"
    Stop
End Sub

Но при клике на Frame1 ничего не происходит. Даже если указать NewCtrl.Name = Frame1

Re: События на програмно созданном control'е

Да, действительно.. Причем если после первого запуска добавить вручную на форму Frame1, то при последующем запуске код работает...
Посмотрите вот такой код. Он, правда, под Excel, но зато работает...  :D  При большем желании можно, наверное, какие-то приемы использовать в Акаде. Код создает на форме 100 кнопок, и процедуры обработки клика по каждой из них..

Option Explicit

Sub Add100Buttons()
  Dim UFvbc As VBComponent
  Dim CMod As CodeModule
  Dim ctl As Control
  Dim cb As CommandButton
  Dim n As Long, c As Long, r As Long
  Dim code As String
  
'   Проверка доступа к объекту VBProject
    On Error Resume Next
    Dim x
    Set x = ActiveWorkbook.VBProject
    If Err <> 0 Then
        MsgBox "Ваши настройки безопасности не позволяют выполнить этот макрос.", vbCritical
        On Error GoTo 0
        Exit Sub
    End If
  
  Set UFvbc = ThisWorkbook.VBProject.VBComponents("UserForm1")

' Удаление всех элементов управления
  For Each ctl In UFvbc.Designer.Controls
    UFvbc.Designer.Controls.Remove ctl.Name
  Next ctl

' Удаление кода VBA
  UFvbc.CodeModule.DeleteLines 1, UFvbc.CodeModule.CountOfLines

' Добавление 100 кнопок
  n = 1
  For r = 1 To 10
    For c = 1 To 10
      Set cb = UFvbc.Designer.Controls.Add("Forms.CommandButton.1")
      With cb
        .Width = 22
        .Height = 22
        .Left = (c * 26) - 16
        .Top = (r * 26) - 16
        .Caption = n
      End With

'     Код обработчика событий
      With UFvbc.CodeModule
        code = ""
        code = code & "Private Sub CommandButton" & n & "_Click" & vbCr
        code = code & "Msgbox ""Это кнопка" & n & """" & vbCr
        code = code & "End Sub"
        .InsertLines .CountOfLines + 1, code
      End With
      n = n + 1
    Next c
  Next r
  VBA.UserForms.Add("UserForm1").Show
End Sub

Sub ShowForm()
  UserForm1.Show
End Sub

Re: События на програмно созданном control'е

Нашел решение - http://www.xtremevbtalk.com/t61143.html