У меня есть макрос-код, который создаст кнопки в пользовательской форме в соответствии с данными на листе 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