Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Objekt in UserForm variabel ansprechen

Forumthread: Objekt in UserForm variabel ansprechen

Objekt in UserForm variabel ansprechen
17.08.2013 18:37:46
Heiko
Nochmal Hallo,
ich habe eine UserForm, in dieser befinden sich etliche TextBoxen. Diese möchte ich variabel ansprechen. Hier ein Beispiel um zu verdeutlichen was ich meine. Das Beispiel funktioniert natürlich nicht.
Die Textbox heißt: TBDatum01
Die UserForm heißt: UFLTT
Sub Test ()
Dim varName as String, varNummer as String
varName = "TBDatum"
varNummer = "10"
UFLTT.varName & varNummer. Value = Date
End Sub
Das kann schon nicht kompiliert werden.

Fehler beim kompilieren: erwartet: Ausdruck

Wenn ich diese Variablen zusammen fasse und nur einen Variable eintrage erscheint

Fehler beim kompilieren: Methode oder Datenobjekt nicht gefunden

Ich hab schon einiges versucht, aber nichts führt zum gewünschten Erfolg.
Ich bin über jede Hilfe dankbar!
Gruß Heiko.

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objekt in UserForm variabel ansprechen
17.08.2013 18:40:05
Hajo_Zi
Hallo Heiko,
UFLTT.Controls(varName & varNummer) = Date

AW: Objekt in UserForm variabel ansprechen
17.08.2013 18:44:28
Heiko
Hallo Hajo,
das ging ja in Lichtgeschwindigkeit! Funktioniert natürlich.
Super! Vielen Dank für die Hilfe!
Gruß Heiko.
Anzeige
;
Anzeige

Infobox / Tutorial

Objekt in UserForm variabel ansprechen


Schritt-für-Schritt-Anleitung

Um ein Objekt in einer UserForm variabel anzusprechen, kannst Du die Controls-Eigenschaft verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor.
  2. Füge eine UserForm hinzu, wenn Du noch keine hast. Nennen wir diese UFLTT.
  3. Füge einige TextBoxen hinzu und benenne sie nach einem bestimmten Muster, z.B. TBDatum01, TBDatum02 usw.
  4. Erstelle ein neues Modul und füge den folgenden Code ein:
Sub Test()
    Dim varName As String, varNummer As String
    varName = "TBDatum"
    varNummer = "01" ' Hier kannst Du die Nummer dynamisch anpassen
    UFLTT.Controls(varName & varNummer).Value = Date
End Sub
  1. Führe das Skript aus und Du wirst sehen, dass das aktuelle Datum in die entsprechende TextBox geschrieben wird.

Häufige Fehler und Lösungen

  1. Fehler: Fehler beim kompilieren: erwartet: Ausdruck

    • Lösung: Stelle sicher, dass Du die Controls-Eigenschaft korrekt verwendest. Der Code sollte UFLTT.Controls(varName & varNummer).Value = Date sein.
  2. Fehler: Fehler beim kompilieren: Methode oder Datenobjekt nicht gefunden

    • Lösung: Überprüfe, ob die TextBox mit dem Namen tatsächlich existiert und dass Du die richtigen Namen verwendest.

Alternative Methoden

Eine alternative Methode, um auf die TextBoxen in der UserForm zuzugreifen, ist die Verwendung von FindControl oder durch Schleifen. Beispiel:

Sub SetDateToAllTextBoxes()
    Dim ctrl As Control
    For Each ctrl In UFLTT.Controls
        If TypeName(ctrl) = "TextBox" Then
            ctrl.Value = Date
        End If
    Next ctrl
End Sub

Diese Methode setzt das Datum in alle TextBoxen der UserForm.


Praktische Beispiele

  • Beispiel 1: Setze das Datum für mehrere TextBoxen:
Sub SetMultipleDates()
    Dim i As Integer
    For i = 1 To 5
        UFLTT.Controls("TBDatum" & Format(i, "00")).Value = Date
    Next i
End Sub
  • Beispiel 2: Dynamisches Ansprechen basierend auf Benutzerinput:
Sub SetDateBasedOnInput()
    Dim inputNum As String
    inputNum = InputBox("Gib die Nummer der TextBox ein (z.B. 01):")
    UFLTT.Controls("TBDatum" & inputNum).Value = Date
End Sub

Tipps für Profis

  • Verwende Konstanten: Definiere die Namen der TextBoxen als Konstanten, um Tippfehler zu vermeiden.
  • Error Handling: Füge Fehlerbehandlung hinzu, um sicherzustellen, dass der Code auch bei unerwarteten Eingaben stabil bleibt. Beispiel:
On Error Resume Next
UFLTT.Controls(varName & varNummer).Value = Date
If Err.Number <> 0 Then
    MsgBox "TextBox nicht gefunden!"
End If
On Error GoTo 0

FAQ: Häufige Fragen

1. Kann ich die TextBoxen dynamisch erstellen?
Ja, du kannst TextBoxen dynamisch zur Laufzeit erstellen, indem du die Add-Methode verwendest.

2. Wie kann ich den Namen einer TextBox zur Laufzeit ändern?
Du kannst den Namen einer TextBox mit ctrl.Name = "NeuerName" ändern, nachdem du sie erstellt hast.

3. Ist dieser Code in allen Excel-Versionen kompatibel?
Ja, die gezeigten Methoden sind in der Regel in den aktuellen Excel-Versionen (ab Excel 2007) kompatibel.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige