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

Textfeld aus VBA heraus füllen

Forumthread: Textfeld aus VBA heraus füllen

Textfeld aus VBA heraus füllen
21.10.2017 18:20:32
Frank
Hallo an die Excel-Spezialisten,
ich verzweifle gerade an einer Kleinigkeit mit Formularen, die ich eigentlich nie nutze...
Ich habe verschiedene VBA-Prozeduren erstellt, die Daten aus Dateien importieren, in die gewünschten Arbeitsmappen bringen und sie nach meinen Vorgaben formatieren - alles prima soweit.
Nun wollte ich, um das Ganze doch noch ein wenig nett zu formatieren und die Prozeduren nicht über das Menü "Entwicklertools" aufrufen zu müssen, eine Arbeitsmappe als kleines User Interface verwenden. Mit den Buttons ist das kein Problem, das hat auf Anhieb funktioniert.
In einem ebenfalls eingefügten Textfeld wollte ich dann noch den Inhalt einer globalen Variable einfügen, wenn eine der verschiedenen VBA-Prozeduren gelaufen ist.
Eine normale Zelle in dieser Mappe mit dem Inhalt der Variable zu füllen, ist kein Thema:
Sheets("Control").Cells(14, 3).Value = MeineGlobaleVariable
Mit dem Textfeld gelingt es mir aber nicht, weil ich nicht verstehe, wie ich es korrekt ansprechen muss. Nachdem ich es eingefügt habe, steht im Bearbeiten-Feld:
=EINBETTEN("Forms.TextBox.1";"") und in den Eigenschaften "TextBox1"
Wenn ich im VBA-Code schreibe:
Sheets("Control").Forms.TextBox.1.Text = MeineGlobaleVariable
bekomme ich einen Kompilierungsfehler vom Editor, dass das Anweisungsende erwartet wird.
Wenn ich im VBA-Editor schreibe:
Sheets("Control").Forms.TextBox1.Text = MeineGlobaleVariable
bekomme ich bei der Ausführung die Fehlermeldung "Laufzeitfehler 438 - Objekt unterstützt diese Eigenschaft nicht."
Wenn ich das Sheet weglasse und schreibe:
Forms.TextBox1.Text = MeineGlobaleVariable
bekomme ich bei der Ausführung die Fehlermeldung "Laufzeitfehler 424: Objekt erforderlich".
Mehr Varianten fallen mir im Moment nicht ein und ich hoffe, jemand von Euch ist fit in diesen Dingen und kann mir sagen, wie ich es richtig ansprechen muss.
Danke!
Viele Grüße
Frank
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfeld aus VBA heraus füllen
21.10.2017 18:26:20
Crazy
Hallo
das geht in meinem Test so
Sheets("Control").TextBox1.Text = MeineGlobaleVariable
MfG Tom
AW: Textfeld aus VBA heraus füllen
21.10.2017 18:26:45
Nepumuk
Hallo Frank,
versuch es mal so:
Worksheets("Control").TextBox1.Text = MeineGlobaleVariable
Wobei ich davon ausgehe dass deine Textbox auch TextBox1 heißt.
Gruß
Nepumuk
Anzeige
AW: Textfeld aus VBA heraus füllen
21.10.2017 18:52:21
Frank
Hallo Nepumuk,
ist ja verrückt, hätte ich mal eher aufgehört zu probieren und früher gefragt. Soweit ich das sehen kann, ist Dein Tipp die Lösung. Es hat auf Anhieb funktioniert - danke schön! Ich muss jetzt mal die Form "schön" machen, aber wenn das Füllen und Abfragen des Inhalts funktioniert, ist ja 80% erledigt.
Nun muss ich nur noch einen Dialog ergänzen, mit der der Benutzer nach einer Vorgabe gefragt wird, falls die globale Variable und das Feld, aus dem sie sich speist, leer sind. Mal sehen, ob ich dazu einen Code-Schnipsel finde, das ich übernehmen kann.
Gruß
Frank
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Textfeld in Excel mit VBA füllen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Arbeitsmappe und gehe zu dem Arbeitsblatt, wo sich das Textfeld befindet.

  2. Füge ein Textfeld hinzu: Gehe auf die Registerkarte "Entwicklertools", wähle "Einfügen" und klicke auf das Textfeld.

  3. Gib dem Textfeld einen Namen: Klicke mit der rechten Maustaste auf das Textfeld, wähle "Formatieren" und ändere den Namen auf "TextBox1" (oder einen anderen, den du bevorzugst).

  4. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  5. Erstelle eine neue Subroutine und schreibe den folgenden Code, um das Textfeld zu füllen:

    Sub FuelleTextfeld()
       Dim MeineGlobaleVariable As String
       MeineGlobaleVariable = "Hallo, Welt!" ' Beispielinhalt
       Sheets("Control").TextBox1.Text = MeineGlobaleVariable
    End Sub
  6. Führe die Subroutine aus, um den Inhalt in das Textfeld zu übertragen. Du solltest nun den Text im Textfeld sehen.


Häufige Fehler und Lösungen

  • Kompilierungsfehler: Du erhältst möglicherweise einen Fehler wie "Anweisungsende erwartet". Dieser tritt auf, wenn du den Namen des Textfeldes falsch angibst. Stelle sicher, dass du den richtigen Namen, z.B. TextBox1, verwendest.

  • Laufzeitfehler 438: Dieser Fehler tritt auf, wenn das Objekt die angegebene Eigenschaft nicht unterstützt. Achte darauf, dass das Textfeld auch tatsächlich im Arbeitsblatt vorhanden ist.

  • Laufzeitfehler 424: Wenn du den Fehler "Objekt erforderlich" erhältst, kann es daran liegen, dass du versuchst, auf das Textfeld zuzugreifen, ohne den vollständigen Verweis anzugeben. Verwende Sheets("Control").TextBox1.Text, um auf das Textfeld zuzugreifen.


Alternative Methoden

  • Nutze eine UserForm: Statt eines normalen Textfelds kannst du auch eine UserForm in VBA erstellen, die mehr Gestaltungsmöglichkeiten bietet.

  • Verwende ActiveX-Steuerelemente: Aktiviere die Entwicklertools und füge ein ActiveX-Textfeld hinzu, um eine erweiterte Funktionalität zu erhalten. Der Code bleibt ähnlich:

    ActiveSheet.OLEObjects("TextBox1").Object.Text = MeineGlobaleVariable

Praktische Beispiele

  • Beispiel 1: Wenn du mehrere Textfelder füllen möchtest, kannst du den Code erweitern:

    Sub FuelleMehrereTextfelder()
       Sheets("Control").TextBox1.Text = "Text 1"
       Sheets("Control").TextBox2.Text = "Text 2"
    End Sub
  • Beispiel 2: Um Daten aus einer Zelle in ein Textfeld zu übertragen:

    Sub ZelleInTextfeld()
       Sheets("Control").TextBox1.Text = Sheets("Control").Cells(1, 1).Value
    End Sub

Tipps für Profis

  • Verwende With-Anweisung: Wenn du mehrere Eigenschaften eines Textfeldes setzen möchtest, verwende die With-Anweisung, um deinen Code zu optimieren:

    With Sheets("Control").TextBox1
       .Text = "Neuer Text"
       .Font.Size = 12
       .BackColor = RGB(255, 255, 255)
    End With
  • Fehlerbehandlung implementieren: Nutze Fehlerbehandlungsroutinen, um den Code robuster zu machen:

    On Error Resume Next
    Sheets("Control").TextBox1.Text = MeineGlobaleVariable
    If Err.Number <> 0 Then
       MsgBox "Fehler beim Füllen des Textfeldes!"
    End If

FAQ: Häufige Fragen

1. Wie kann ich den Text in einem Textfeld zurücksetzen? Du kannst den Text mit folgendem Code leeren:

Sheets("Control").TextBox1.Text = ""

2. Was mache ich, wenn das Textfeld nicht angezeigt wird? Stelle sicher, dass das Textfeld korrekt in das Arbeitsblatt eingefügt wurde und dass du den richtigen Arbeitsblattsnamen verwendest.

3. Kann ich mehrere Textfelder gleichzeitig füllen? Ja, du kannst einfach mehrere Zeilen im VBA-Code hinzufügen, um verschiedene Textfelder mit unterschiedlichen Werten zu füllen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige