Невозможно добавить код события к динамически создаваемым кнопкам в пользовательской форме - PullRequest
0 голосов
/ 12 июня 2019

У меня есть макрос-код, который создаст кнопки в пользовательской форме в соответствии с данными на листе 2 под названием «Код компании» в рабочей книге (это динамические кнопки, которые выполняются с помощью функции цикла). Теперь проблема в том, что я например, невозможно назначить событие этим вновь созданным кнопкам. После запуска макроса 5 кнопок с именами 1,2,3,4,5 будут созданы в пользовательской форме, теперь мне нужно добавить несколько действий в Button1, чтобы при нажатии на нем должны быть выполнены пункты действия.

Ниже приведен код, который я использовал для создания кнопок. Пожалуйста, помогите мне с кодом, который поможет назначить задачу кнопке.

  Option Explicit

Public Form As UserForm1

Public myform As UserForm, fraMain As MSForms.Frame

Public WithEvents Cancel2 As MSForms.CommandButton




Private Sub UserForm_Initialize()
With Me
       .Width = 500
       .Height = 500
    End With

    Dim NewBtn As Control, Cancel As Control
    Dim Code As String
    Dim NextLine, LeftPos, lastrow, Gap, i As Long, r As Long, c As Variant
    Dim pt As Point

    lastrow = Sheets("Company code").Cells(Rows.Count, 2).End(xlUp).Row
    LeftPos = 30
    NextLine = 100
    Gap = 15
    r = 7
    i = 1

    Set Cancel2 = Controls.Add("Forms.CommandButton.1")
            With Cancel2
                .Top = 400
                .Left = 190
                .Width = 130
                .Height = 30
                .Caption = "Cancel"
                .Visible = True
            .Font.Size = 10
            .Font.Name = "Times New Roman"
            End With


     Do While i <= lastrow
        Do While i <= r
            Set NewBtn = Controls.Add("Forms.CommandButton.1")
            With NewBtn
            .Left = LeftPos
            .Top = NextLine
            .Width = 45
            .Height = 20
            .Name = Sheets("Company code").Cells(i + 1, 2)
            .Caption = Sheets("Company code").Cells(i + 1, 2)
            c = Sheets("Company code").Cells(i + 1, 2)
            If Len(c) = 0 Then
            NewBtn.Visible = False
            Else
            NewBtn.Visible = True
            End If
            .Font.Size = 10
            .Font.Name = "Times New Roman"
        End With
        LeftPos = LeftPos + NewBtn.Width + Gap
        i = i + 1
    Loop
        NextLine = NextLine + 30
        LeftPos = 30
        r = r + 7
    Loop


End Sub

Private Sub Cancel2_click()
    UserForm2.Hide
    UserForm1.Hide
  End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...