Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
472to476
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
472to476
472to476
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Textbox dynamisch benennen

Textbox dynamisch benennen
25.08.2004 13:28:02
Thomas
Hallo Forum,
ich möchte einer Textbox dynamisch einen Namen zuweisen, doch VBA quittiert meine Versuche mit Fehlermedungen.
Ich habe 28 Textboxen in einer UserForm, die alle nach dem Schema Name+Zahl (Tb1, Tb2, ...) benannt sind. Da ich mit allen Textboxen das selbe machen möchte, wollte ich in einer Schleife den Namen der Textbox erzeugen und den meiner Subprozedur übergeben, die dann die Boxen bearbeitet. Klappt nur nicht.
Folgender Code bringt mich zur Verzweiflung:
Dim Tb As msforms.TextBox
For i = 1 to 28
Tb.Name = "Tb" & i
call unterprogramm(Tb)
Next i
Hat jemand eine Idee?
Vielen Dank für eure Bemühungen!
Viele Grüsse,
Thomas

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textbox dynamisch benennen
25.08.2004 14:42:49
DetlefD
Hallo Thomas,
ich weiß nicht genau ob Du die Namen der Textboxen wirklich zur Laufzeit umbenennen möchtest oder sie nur durch eine Schleife ansprechen möchtest um nicht jede einzeln ansprechen zu müßen. Mit folgen Programm kannst Du die Textboxen in einer Schleife auslesen und den Inhalt zB. in ein Array schreiben oder an eine weitere Prozedur übergeben:
Dim Tb As msforms.TextBox
Dim Text(28) as array
For i = 1 to 28
text(i)=Me.Controls("tb" & CStr(i))
Next i
Vieleicht hilft es Dir ein wenig...
Gruß,
Detlef
AW: Textbox dynamisch benennen
25.08.2004 14:49:56
Stephan
Lieber Thomas,
ich glaube, ich verstehe Dein Problem noch nicht ganz. Wenn die Namen der Textboxen alle Name+Zahl sind, hast Du doch die Namen schon, oder?
Waere es eine Loesung, nicht den Namen der Textbox, sondern die ganze Textbox an Dein Unterprogramm zu uebergeben, also
sub Unterprogramm(tb as MSForms.Textbox)
?
Um dann der Reihe nach alle Textboxen in die Finger zu bekommen, koenntest Du durch die Controls collection iterieren, also z.B.
dim c as control
for each c in MyUserForm.Controls
call Unterprogramm(c)
next c
Eventuell muss man pruefen, ob die control, die Du gerade hast, auch eine der gewuenschten Textboxen ist, z.B. anhand des Namens (beginnt mit TB+Zahl) oder so.
Anzeige
Verstehe ich nicht ganz
25.08.2004 15:42:09
Thomas
Vielen Dank für eure schnellen Antworten.
Mein Problem ist, dass Excel nicht zulässt, dass ich mir einen Namen zur Laufzeit "zusammenbaue". Das reine Auslesen reicht nicht, da ich nach der Prüfung des Inhaltes evtl. die Textbox auch wieder ansprechen muss.
Um genau zu beschreiben, was ich möchte, habe ich mal deinen Code verwendet und mein Unterprogramm mit eingebaut:

Sub CB_OK_click()
Dim c As Control
For Each c In MyUserForm.Controls
.BackColor = 16777215
Next c
Dim tb As TextBox
For i = 1 To 28
Set AktTextBox = tb(i) 'Hier kommt der Fehler 91: Objektvariable oder With-Blockvariable nicht festgelegt
If Len(AktTextBox.Text) = 0 Then
MsgBox "Bitte Geben Sie Die Anzahl der Mitarbeiter an!"
AktTextBox.SetFocus
AktTextBox.BackColor = 255
GoTo ende
ElseIf IsNumeric(AktTextBox) = False Then
MsgBox "Bitte geben Sie eine Zahl ein!"
AktTextBox.SetFocus
AktTextBox.BackColor = 255
GoTo ende
End If
Cells(i, 2) = CDec(AktTextBox.Text)
Next i
unload UserForm1
call DiagrammErzeugen()
ende:
End Sub

Anzeige
AW: Verstehe ich nicht ganz
25.08.2004 15:59:09
max
Tach, mal so ausser Hüfte:
"Dim tb As TextBox" kann wech (gibt keine TxtBx, die nur tb heißt)
Dim i as integer muss rein
"Set AktTextBox = Tb(i)" sollte heissen:
"Set AktTextBox = Tb & i" (Tb1 bis Tb28 existieren ja)
Max
AW: Verstehe ich nicht ganz
Ulf
Controls können zur Laufzeit nicht umbenannt werden, es sei denn sie werden auch zur Laufzeit erzeugt.
Ulf
Danke o.T.
25.08.2004 21:45:41
Thomas
.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige