Excel 从UserForm中动态创建的文本框中获取值并将其写入工作表
我有一个由文本框和命令按钮组成的用户表单Excel 从UserForm中动态创建的文本框中获取值并将其写入工作表,excel,vba,textbox,dynamically-generated,Excel,Vba,Textbox,Dynamically Generated,我有一个由文本框和命令按钮组成的用户表单 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.nb
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
通过在文本框中输入一个值,例如3,并单击CommandButton,我创建了三个新的文本框,其中每个文本框都链接了标签。它也会在这些文本框的下方创建另一个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
我在每个新文本框中写入一个值。例如,我在第一个文本框中写“香蕉”,在第二个文本框中写“苹果”,依此类推
我想通过单击new CommandButton,从新的文本框中获取值,并将它们写入一张表中
考虑到这些新文本框是在运行期间创建的,如何从中获取值
以下是链接到我的UserForm的代码:
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
在我的循环中,我想根据创建的位置,用文本框中值的名称替换“Exp”&CStr(I)
。这应该可以:
修改类以添加对表单对象的引用:
Option Explicit
Public WithEvents CmdEvents As MSForms.CommandButton
Public frm As Object '<<<<<<<<<<<
Private Sub CmdEvents_Click()
Dim Ws As Worksheet
Set Ws = Worksheets("Sheet1")
Dim i As Variant
Dim Nb_equip As Integer
Nb_equip = frm.nbEquipTextBox.Value
For i = 1 To Nb_equip
Ws.Cells(6, 2 + i * 2).Value = frm.Controls("Exp" & CStr(i)).Text
Next i
End Sub
选项显式
Public with events CmdEvents As MSForms.CommandButton
公共frm作为对象“感谢您的回答。它就像一个符咒!问题也来自以下部分“Exp”&CStr(i)
。我的控件名称是文本框而不是Exp