Hallo VBA-Gemeinde
In einem Formular werden zur Laufzeit eine Reihe Steuerelemente dynamisch erstellt. Diese werden in Reihen dargestellt und jede Reihe bildet eine Datensatz, der anschießend nach Überprüfung in eine Db gespeichert werden soll. Es sind pro Reihe 17 Steuerelemente. Die Namen werden nach einem festen Schema vergeben (Name + laufende Nr, z.B. cboName1, txtNr1, txtPk1, txtkz1, ...,cboName2, txtNr2, txtPk2, txtKz2,...
Um darauf zugreifen zu können mache ich folgendes:
For each ctl in Userform Controlls
If Left(ctl.Name, 7) = "cboName" Then
ctlNr = Mid(ctl.Name, 8)
...
next
Damit wird z.B. cboName3 gefunden. Damit ist auch klar, dass txtNr3, txtPk3, txtKz3, ... existieren müssen. Mein Problem ist nun auf diese weiteren Steuerelemente zu zugreifen. So was wie
MsgBox txtNr & ctlNr
funktioniert natürlich nicht, da ein Steuerelement txtNr nicht existiert (wohl aber txtNr3). Ich könnte das zwar mit einer weiteren (inneren) Schleife hinkriegen.
For Each ctl in Userform Controlls
If Left(ctl.Name, 7) = "cboName" Then
ctlNr = Mid(ctl.Name, 8)
For Each ctl2 in Userform Controlls
If ctl.Name = "txtNr" & ctlNr Then
...
Next
Next
Dies ist aber alles andere als elegant (bei 17 Textboxen sind das 17 innere Schleifen), schlecht für die Performance und auch völlig unnötig. Wahrscheinlich gibt es eine ganz einfache Lösung und ich bin einfach nur zu blind.
Also meine Frage noch mal anders formuliert. Wie kann ich auf ein Steuerelement zugreifen, dessen Name ich vorher aus vorhandenen Informationen zusammensetzten muß. Ich hoffe, ich habe meine Frage einigermassen verständlich formuliert und es findet sich hier ein jemand, der mir helfen kann.
Danke im voraus
Gonzu
|