Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1052to1056
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform Textfeld-Namen mit Schleife ansprechen

Userform Textfeld-Namen mit Schleife ansprechen
19.02.2009 10:17:00
Uwe
Hi Forum,
ich hab die Frage schon mal vor einiger Zeit eingestellt - leider ohne Ergebnis
(abgesehen von ein paar sehr netten Reisstipps).
Es sollen Werte aus einem Array mehreren Textboxen zugewiesen werden. Die
Textboxen heißen txt1, txt2, ..., txtn. Vorgestellt habe ich mir in etwa Folgendes:
for i = 1 to n
userform.txt(i).value=array(i)
next i
Da der Name der Textbox natürlich keine Integer-Variable ist kann das aber gar nicht funktionieren
(jeden falls läuft der Code so nicht). Auch mein Versuch über eine Variable mit
for i = 1 to n
Variable = txt & i
usreform.variable.value = array(i)
next i
funktionierte leider nicht.
Herzlichen Dank im voraus
Uwe

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform Textfeld-Namen mit Schleife ansprechen
19.02.2009 10:29:00
Oberschlumpf
Hi Uwe
Versuch es so:

Sub sbTxtFill()
Dim lctrTxt As Control, liZaehler As Integer
liZaehler = 1
For Each lctrTxt In UserForm.Controls
If LCase(TypeName(lctrTxt)) = "textbox" Then
lctrTxtCmb.Text = Str(liZaehler)
liZaehler = liZaehler + 1
End If
Next
End Sub


Für UserForm musst du den Namen deines Userforms eintragen.
Hilfts?
Ciao
Thorsten

AW: Userform Textfeld-Namen mit Schleife ansprechen
19.02.2009 10:45:00
Uwe
Hallo Thorsten,
habe mich mit Controls noch nicht auseinander gesetzt aber die Schleife
For Each lctrTxt In UserForm.Controls
ergibt für lctrTxt immer den Wert "".
Es gibt in der Userform auch m.E. keine Controls (außer in meinem Falle einen OK-Button,
der dann den Wert "False" für lctrTxt ausgibt).
Angesprochen werden müssen die TextBoxen, denen dann Werte zugewiesen werden.
Tschüß
Uwe
Anzeige
AW: Userform Textfeld-Namen mit Schleife ansprechen
19.02.2009 10:52:00
Oberschlumpf
Hi Uwe
Sorry, eine Zeile aus meinem Originalcode vergaß ich anzupassen.
Ändere diese Zeile

lctrTxtCmb.Text = Str(liZaehler)


um in


lctrTxt.Text = Str(liZaehler)


Zitatauszug:
...Es gibt in der Userform auch m.E. keine Controls...
Alles, was du in einem Userform siehst, ist ein Control.
Egal, ob Button, Listbox, Frame, Textbox, Label,... es handelt sich immer um Controls.
Und...es heißt....das Userform(ular) und nicht die Userformular.
Funzt mein Code jetzt?
Ciao
Thorsten

Anzeige
AW: Userform Textfeld-Namen mit Schleife ansprechen
19.02.2009 11:07:00
Uwe
Hi Thorsten,
danke für die Belehrung (aber da "Form" im Sinne eines Behältnisses zur Aufnahme weiterer Inhalte ebenso möglich wäre könnte man darüber, da es auch im Englischen nicht spezifiziert ist, notfalls streiten - was ich aber nicht vor habe :-))
Die Änderung der Code-Zeile brachte übrigens nicht den gewünschten Erfolg, da ja, wie gesagt, lctrTxt immer "" ist und damit die Eingangsbedingung
If LCase(TypeName(lctrTxt)) = "TextBox" Then
niemals erfüllt wird (hätte ich vielleicht vorhin noch erwähnen sollen).
Daher kam auch die Irritation mit den Controls.
p.s.: Liege ich richtig, dass der TypeName der Name der TextBox ist?
Viele Grüße
Uwe
Anzeige
AW: Userform Textfeld-Namen mit Schleife ansprechen
19.02.2009 11:32:00
Oberschlumpf
Hi Uwe
Steht nun in deinem Code anstelle von

If LCase(TypeName(lctrTxt)) = "textbox" Then 


wirklich


If LCase(TypeName(lctrTxt)) = "TextBox" Then 


?
Wenn ja, musst du TextBox in textbox zurück ändern.
Denn LCase wandelt den in TypeName enthaltenden Wert in Kleinbuchstaben um.
Und Test ist nun mal nicht test ;-)
Oder TextBox ist auch nicht textbox.
Meinen Code habe ich getestet und er funktioniert.
Bei 6 Controls (3 Textboxen, 3 Labels) erhalten die Textboxen nacheinander die Werte 1 - 3.
Die TypeName-Funktion gibt eine Zeichenfolge zurück, die Informationen über eine Variable enthält
Im aktuellen Fall wird der Controltyp zurückgegeben.
Weitere Infos findest du in der Excel-Hilfe.
Bin neugierig, ob nach Änderung von TextBox in textbox nun der Code auch bei dir funzt.
Ciao
Thorsten

Anzeige
AW: Userform Textfeld-Namen mit Schleife ansprechen
19.02.2009 11:39:00
Uwe
Hi Thorsten,
hatte jetzt mal 10 Minuten. Dein Vorschlag hat mich auf die Lösung gebracht:

Sub sbTxtFill()
Dim lctrTxt As Control, liZaehler As Integer
liZaehler = 1
For Each lctrTxt In UserForm1.Controls
If InStr(1, lctrTxt.Name, "TextBox") Then
lctrTxt.Value = Str(liZaehler)
liZaehler = liZaehler + 1
End If
Next
UserForm1.Show
End Sub


Damit habe ich mein Grundgerüst...
Danke
Uwe

freut mich...owT
19.02.2009 11:52:00
Oberschlumpf

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige