Hallo Stefan,
in VBA gibt es leider keine Control-Arrays, das wirst du nicht so machen können wie du dir das vorstellst. Und den Namen des Textfelds vorher zusammenzusetzen würde ein doppeltes Parsen der Codezeile bedeuten, ich glaube nicht, dass VBA das kann (MEDUSA konnte das mit dem @-Trick, aber das ist auch schon 25 Jahre her )
Du kannst diese Art von Array, genauer eigentlich Collection, aber indirekt ansprechen. Es gibt für die Forms und auch z.B. für Frames (also die Objekte, die andere Controls wie Textfelder beinhalten können) eine Eigenschaft, in der diese Controls gesammelt sind. Diese kannst du über eine laufende Nummer ansprechen. Die Nummer innerhalb dieser Control-Collection kommt durch den Einfügezeitpunkt zustande, nicht über den Namen der Textbox.
Ich hab ein kleines Beispiel gepuzzelt, Aufbau der Form und der Textfelder siehe Screenshot, der Codeschnipsel sieht so aus:
Code:
Private Sub CommandButton1_Click() Dim AnzahlControlsInFrame As Long
Dim AusgabeText As String
AnzahlControlsInFrame = Frame1.Controls.Count
For i = 0 To AnzahlControlsInFrame - 1
AusgabeText = i & ": "
AusgabeText = AusgabeText & Frame1.Controls.Item(i).Name & " "
AusgabeText = AusgabeText & Frame1.Controls.Item(i).Text
Debug.Print AusgabeText
Next
End Sub
Ich habe die Textfelder deswegen in einen Frame gepackt, weil du ja üblicherweise auf der Userform noch eine Menge anderer Controls hast (vor allem bei 50 Textfeldern
).
Vielleicht ist das ein Ansatz für dich, ansonsten bleibt wohl nur viele Zeilen Code zu schreiben
Ciao,
Stefan
------------------
Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP