У меня есть пользовательская форма, которая состоит из TextBox и CommandButton. Введя значение в TextBox, например, 3, и нажав CommandButton, я могу создать 3 новых TextBox с ярлыками, связанными с каждым из них. Он также создает только под этими TextBox и метки другой CommandButton.
Затем я пишу в каждом новом TextBox значение. Например, в первом TextBox я пишу «Банан», во втором «Apple» и т. Д.
Теперь, что я хочу сделать, нажав новый CommandButton, это получить значение из новых TextBoxes и запишите их в лист (например, лист1).
Моя проблема в том, что я не знаю, как получить значение из этих новых текстовых полей, учитывая, что они были созданы во время рутинной работы.
Вот код, связанный с моей пользовательской формой:
Option Explicit
Dim cmdArray() As New Classe1
Public Sub nbEquipButtonValidation_Click()
Dim i As Variant
Dim Nb_equip As Integer
Dim j As Long
Nb_equip = UserForm1.nbEquipTextBox.Value
For i = 1 To Nb_equip
Dim EquipLabel
Dim Text_Boxes
Dim CmdBtn
Set EquipLabel = Me.Controls.Add("Forms.Label.1")
With EquipLabel
.Top = 25 + 10 * i * 2
.Left = 10
.Caption = "Equipement n°" & CStr(i)
.Name = "Equip" & CStr(i)
End With
Set Text_Boxes = Me.Controls.Add("Forms.TextBox.1", True)
With Text_Boxes
.Top = 20 + 10 * i * 2.1
.Left = 100
.Name = "Text_Box" & CStr(i)
End With
Next i
Set CmdBtn = Me.Controls.Add("Forms.CommandButton.1")
With CmdBtn
.Top = 20 + 10 * Nb_equip * 2.1 + 30
.Left = 75
.Caption = "Créer"
.Name = "Validation"
End With
' Apply a class to the new Button
j = 1
ReDim Preserve cmdArray(1 To j)
Set cmdArray(j).CmdEvents = CmdBtn
Set CmdBtn = Nothing
End Sub
Вот также класс, который я создал, чтобы получить эти данные и записать их в лист, нажав вторую CommandButton.
Option Explicit
Public WithEvents CmdEvents As MSForms.CommandButton
Private Sub CmdEvents_Click()
Dim Ws As Worksheet
Set Ws = Worksheets("Sheet1")
Dim i As Variant
Dim Nb_equip As Integer
Nb_equip = UserForm1.nbEquipTextBox.Value
For i = 1 To Nb_equip
With Ws
.Cells(6, 2 + i * 2).Value = "Exp" & CStr(i)
End With
Next i
End Sub
В моем l oop я хочу заменить "Exp" & CStr(i)
именем значения в TextBox в соответствии с позицией i создания.
Если у кого-то есть идеи, я в ! Если у вас есть какие-либо вопросы, я отвечу на них. Спасибо.