Encontré esta forma:
Tienes esto
Private Sub Userform_Activate()
izq = Label1.Left - 7.5
alt = Label1.Top + Label1.Height + 10
Set txtB1 = Me.Frame1.Controls.Add("Forms.TextBox.1")
With txtB1
.Name = "TextBox1"
.Height = 18
.Width = 48
.Left = izq
.Top = alt
End With
End Sub
Entonces, le pusiste por nombre "TextBox" al nuevo control: Texbox1.
Con lo siguiente podemos recuperar el valor del "TextBox"
Private Sub CommandButton1_Click()
For Each ctr In Controls
nombre = ctr.Name
If nombre = "TextBox1" Then
MsgBox ctr.Value
End If
Next
End Sub
Ahora, si vas a crear varios textbox, te sugiero lo siguiente:
Declaramos 2 variables públicas con y alto
Dim con, alto
Cuando activas el form le decimos que la variable con es igual a 1, y alto = al alto del label.
En un botón pones el creador de textbox, cada que lo presiones te creará un textbox nuevo abaja del textbox anterior y con un nuevo nombre. Textbox1, textbox2, de esa forma puedes saber qué dato está en qué textbox.
Dim con, alto
Private Sub CommandButton1_Click()
For Each ctr In Controls
nombre = ctr.Name
If nombre = "TextBox1" Then
MsgBox ctr.Value
End If
Next
End Sub
Private Sub CommandButton2_Click()
izq = Label1.Left - 7.5
Set txtB1 = Me.Frame1.Controls.Add("Forms.TextBox.1")
With txtB1
.Name = "TextBox" & con
.Height = 18
.Width = 48
.Left = izq
.Top = alto
End With
alto = alto + 28
End Sub
Private Sub Userform_Activate()
con = 1
alto = Label1.Top + Label1.Height + 10
End Sub
Saludos.Dante Amor
Recuerda valorar la respuesta.