Excel VBA: Textbox-Name Frage?

Hallo,

ich hab in VBA (Excel) eine Textbox-Matrix mit 10x10 Felder erstellt, welch ich wie folgt benannt habe: txt_von1, txt_von2, txt_von3, usw.

Wie kann ich den Textbox Namen in eine For-Schleife dynamisch abfragen, so das ich nicht jede Textbox einzeln ansprechen muss.

z.B. (funktioniert aber nicht)
##############################################
For i = 1 to 100

UserForm1.txt_voni.Visible = True
’ ^hier soll die Variable i hochgezählt werden
Next i
##############################################

Danke
Florian Endres

Probier mal folgendes:

Dim i As Integer
For i = 1 to 100
UserForm1.txt_von(i).Visible = True
Next

wenns damit nicht geht kannst du dir ja einfach den Code per Code schreiben lassen… und dann einfach in die if schleife kopieren.

Dim i As Integer
For i = 1 To 100
Debug.Print „UserForm1.txt_von“ & i & „.Visible = True“
Next

Gruß
Chris

Erstes Beispiel:
Auf diese Syntax war ich auch schon gekommen, funktioniert aber nicht.

Zweites Beispiel:
Der Code wird zwar in das Direktfenster geschrieben aber nicht ausgeführt, erst wenn ich hinter der jeweiligen Zeile im Direktfenster Return drücke wird er ausgeführt. ???

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hallo florian,

die textbox anhand eines index programmieren(textbox(3).text) ist in vba nicht möglich(nur vb)

um die funktionalität zu erreichen die du möchtest ist folgendes zu schreiben:

Option Explicit

Sub HighTextBoxes()
Dim ctlCurrentCurrent As MSForms.Control
For Each ctlCurrent In Userforms(„DlgKontoZuordnung“).Controls
If TypeName(ctlCurrent) = „TextBox“ Then _
ctlCurrent.BackColor = vbHighlight
Next ctlCurrent
Userforms(„DlgKontoZuordnung“).Repaint
End Sub

diese „index“-programmierung ist m. e. auch nur ein „ausrutscher“ in vb6. in anderen programmiersprachen wie c# oder vb.net wird es wie o. beschrieben gemacht.(also for each element in container…)

hoffe es hilft

gruß

rasta

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo, Florian!

War schon fast richtig:

##############################################
For i = 1 to 100

UserForm1.txt_voni.Visible = True
’ ^hier soll die Variable i hochgezählt werden

Dann so:

UserForm1.Controls("txt\_von" & cstr(i)).Visible = True

Next i
##############################################

Gruß, Manfred

Danke für all die Antworten hab es aber so gelöst.

for i = 1 to 10
UserForm1(„txt_von“ & Trim(Str(i))).visible = true
nexti

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]