Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Textbox dynamisch benennen

Betrifft: Textbox dynamisch benennen von: Thomas
Geschrieben am: 25.08.2004 13:28:02

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

  


Betrifft: AW: Textbox dynamisch benennen von: DetlefD
Geschrieben am: 25.08.2004 14:42:49

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


  


Betrifft: AW: Textbox dynamisch benennen von: Stephan
Geschrieben am: 25.08.2004 14:49:56

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.


  


Betrifft: Verstehe ich nicht ganz von: Thomas
Geschrieben am: 25.08.2004 15:42:09

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



  


Betrifft: AW: Verstehe ich nicht ganz von: max
Geschrieben am: 25.08.2004 15:59:09

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


  


Betrifft: AW: Verstehe ich nicht ganz von: Ulf
Geschrieben am: 25.08.2004 16:45:11

Controls können zur Laufzeit nicht umbenannt werden, es sei denn sie werden auch zur Laufzeit erzeugt.

Ulf


  


Betrifft: Danke o.T. von: Thomas
Geschrieben am: 25.08.2004 21:45:41

.


 

Beiträge aus den Excel-Beispielen zum Thema "Textbox dynamisch benennen"