Ich erstelle dynamisch eine Benutzerform namens UserForm1. Darin erzeuge ich Textfelder, die manuell von einem Benutzer ausgefüllt werden. Danach möchte ich ihren Wert lesen, aber ich weiß nicht, wie ich die (Wert der) Textbox aufrufen soll.Syntax, um dynamisch benannte Textfeld in Benutzerformular in VBA Excel zu lesen?
Der folgende Code wird verwendet, um die Textfelder zu erstellen und benennen:
With UserForm1 'scaling userform
.Height = max_width
.Width = 600
End With
For test1 = 1 To nr_of_zeros + 1 'create textboxes
Set ctextbox = Controls.Add("forms.textbox.1", test1) 'creating textbox
With ctextbox 'scaling textbox
.Height = 20
.Width = 40
.Top = 40 + 25 * test1
.Left = 400
End With
Also das Feld wird den Namen der Nummer haben von test1
(integer oder lang?).
Ich habe versucht die folgenden Sätze zu versuchen, den Wert der Textbox zu lesen in: absorb_text
aber bisher nicht erfolgreich. Kennt jemand den korrekten vollständigen Weg, um die oben erstellte Textbox aufzurufen?
'ctextbox.name = Controls.Add("forms.textbox.1", test1) 'creating textbox
'absorb_text = forms("textbox").Controls(test1).Value
'absorb_text = forms.("UserForm1").textbox.(test1).value
forms.textbox.1.(test1)
strname = TextBox1(test1).Text
.range("A2")
aber mit
Thisworkbook.worksheets("sheetname").range("A2").text
Thisworkbook.worksheets("sheetname").range("A2").value
Thisworkbook.worksheets("sheetname").cells(2,1).text
Thisworkbook.worksheets("sheetname").cells(2,1).value
Vielen Dank (Analog, muss man nicht Zelle "A2" von nennen)! Ich habe mich immer noch gewundert, warum/was die 1
in "forms.textbox.1"
tut Ich kopierte es, weil es funktionierte, aber bin durch seine Funktion verwirrt.
Auch im Lichte Ihrer Diskussion unten: Ich glaube, technisch sucht der Code nicht nach einem Kontrollnamen, der gleich ist/a Nummer 1
, sondern zu einem String-Zeichen, das das Zeichen 1 gleich ist. Daher ist es nicht gleich einer Zahl, sondern ein Zeichen.
* Argument dagegen ist, dass es immer noch funktioniert mit: `Wenn ctrl.Name = 1 Dann 'in diesem Fall würde ich denken, dass die 1 als eine Zahl behandelt wird.
versuchen, den Code in meine Antwort unten –