Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kontrolle von Eingabe in TextBoxes

Forumthread: Kontrolle von Eingabe in TextBoxes

Kontrolle von Eingabe in TextBoxes
19.01.2004 14:09:25
UnitedArtist
Hallo,
in einer UserForm eingebundene TextBoxes sollen auf die korrekte Eingabe hin überprüft werden sobald ein CommandButton geclickt wird. Der VBA-Code wird nämlich untebrochen, falls eine Box freigelassen wurde, da dieser Wert nicht "" oder 0 sein darf. Wie kann ich diese Überprüfung programmieren? Der VBA-Code soll erst fortgesetzt werden sobald alle Felder korrekt gefüllt sind.
Vielen Dank...
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Kontrolle von Eingabe in TextBoxes
19.01.2004 14:17:31
Lars
Hallo,
DU kannst mit einer Schleife alle Textfelder kontrollieren
For Each Control in UserForm.Controls
if (Control.Value = "" or Control.Value = 0) then
MsgBox "Füllen Sie erst alle Felder aus"
End if
next
... es ist aber besser, wenn du dann die Textfelder in einen Frame setzt, damit er nicht den Button überprüft. Sonst mußt du erst noch die COntrols identifizieren, ob es Textfelder oder was anderes sind.
Grüße Lars
Anzeige
AW: Kontrolle von Eingabe in TextBoxes
19.01.2004 14:43:26
UnitedArtist
Hallo Lars,
ich habe die 3 Textboxes (und zusätzlich 2 ListBoxes) in einem Frame. Leider erscheint die MessageBox sofort beim Makrostart. Ich kann aber weiterhin alle Felder leer lassen und beim Übertragen in das Excel-Doc. kommt dann eine Fehlermeldung, weil ein Feld leer geblieben ist. Ich möchte, daß das programm nicht fortfährt solange die felder nicht gefüllt sind. Dann soll ein CommandButton geclickt werden, die Prüfung soll erfolgen und bei positivem Ergebnis, fährt das Programm fort. Kann man das nicht in eine Schleife einbinden?
"Prüfe Eingabe in den Textfeldern" bis "CommandButton" gedrückt. Fahre erst fort nachdem alle Felder gefüllt sind..
Vielen Dank, Jan
Anzeige
AW: Kontrolle von Eingabe in TextBoxes
19.01.2004 14:18:53
Matthias G
Hallo ??? (Realname ->FAQ)
folgender Code ins UserForm-Codemodul:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value = "" Or TextBox1.Value = "0" Then
MsgBox "Eingabe falsch"
Cancel = True
End If
End Sub

Gruß
Matthias
Anzeige
AW: Kontrolle von Eingabe in TextBoxes
19.01.2004 14:32:51
Jan P
Hallo Matthias,
vom Prinzip her hilft mir der Code schon weiter. Nur erscheint die MessageBox gleich nachdem man das Makro startet. Die Inhalte sollen aber erst geprüft werden sobald der CommandButton betätigt wird. Dann soll das programm nicht stoppen, sondern solange mit dem Fortfahren warten bis die TextBoxes gefüllt sind. Es handelt sich um 3 TextBoxes und 2 Listboxes.
MfG Jan
Anzeige
AW: Kontrolle von Eingabe in TextBoxes
19.01.2004 15:15:02
Matthias G
Hallo Jan,
Das Makro kann nicht warten i.e.S., es sind ja im Userform lauter ereignisorientierte Prozeduren. D.h. Dein CommandButton_Click-Code kann die Textboxen prüfen, dann bei Unvollständigkeit einen Fehler melden und "Exit Sub". Vielleicht noch ein SetFocus auf die fehlerhafte Textbox.
Wenn alles passt, kann ja der Code fortgesetzt werden.
Nach Korrektur der Textboxes muss das nochmal der CommandButton gedrückt werden.
Dass der Code CommandButton_Click auf die Korrektur der Textboxes "wartet", ist nicht möglich und wohl auch nicht nötig, oder?
Gruß,
Matthias
Anzeige
AW: Kontrolle von Eingabe in TextBoxes
19.01.2004 15:24:58
Jan P
Hallo Matthias,
Im Grunde genommen "wartet" das Makro ja.... Der Benutzer hat ja eine beliebig lange Zeit, die TextBoxes zu füllen. Ist er der Meinung, daß alle Eingaben getätigt sind, clickt er den CommandButton. Mit diesem Ereignis soll geprüft werden, ob auch wirklich alle Eingaben vorgenommen wurden. Das kann mit Hilfe einer MessageBox angezeigt werden.
Nur ist mein Problem dann, daß das Makro ja die fehlerhaften TextBox-Inhalte (in diesem fall 0) übernimmt. Dann erhalte ich eine Fehlermeldung beim Übertragen ind die Excel-Arbeitsmappe. Und natürlich darf die TextBox auch nicht leer sein, weil dort zum Beispiel eine alphanummerische Angabe gemacht werden muß.
Der CommandButton muß ja auch nicht warten - vielleicht ist folgende Programmierung möglich:
Ereignis: CommandButton: Click (Prüfung der Eingabe in TextBoxes)
1. Fehler: Meldung über MsG-Box und Möglichkeit erneut was in die TextBoxes einzutragen. Um dann wieder mit dem Click-Ereignis eine Prüfung vorzunehmen.
2. Kein Fehler: Übernahme der Werte....
Vielen Dank und Gruß Jan
Anzeige
AW: Kontrolle von Eingabe in TextBoxes
19.01.2004 18:26:54
Matthias G
Hallo Jan,
also nochmal:
In einem allgemeinen Modul steht der Code:
...
UserForm1.Show
(weiterer Code)
...
weiterer Code wird erst abgearbeitet, wenn das UserForm geschlossen wird (UserForm1.Unload oder UserForm1.Hide, Ausnahmne: wenn das UF die Eigenschaft ShowModal=False hat).
Du musst halt nun dafür Sorge tragen, dass es erst geschlossen wird, wenn alle Eingaben ok sind.
Also (vereinfacht):

Private Sub CommandButton1_Click()
If TextBox1.Value = "" Or TextBox2.Value = "" Then
MsgBox "Bitte Eingaben vervollständigen!"
Exit Sub
'die Sub wird verlassen, ohne dass das Userform geschlossen wird!
End If
UserForm1.Hide
'hier Code: Übernahme der Werte (oder im allg. Modul nach UserForm1.Show)
End Sub

Anzeige
;
Anzeige

Infobox / Tutorial

Kontrolle von Eingaben in TextBoxes in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Eingaben in TextBoxes auf einem UserForm in Excel zu kontrollieren, kannst Du folgenden Schritt-für-Schritt-Ansatz verfolgen:

  1. UserForm erstellen: Öffne den VBA-Editor (ALT + F11) und füge ein neues UserForm hinzu.

  2. TextBoxes und CommandButton hinzufügen: Platziere die gewünschten TextBoxes und einen CommandButton auf dem UserForm.

  3. Code für die Eingabekontrolle: Füge den folgenden VBA-Code in das Codemodul des UserForms ein:

    Private Sub CommandButton1_Click()
       If TextBox1.Value = "" Or TextBox2.Value = "" Or TextBox3.Value = "" Then
           MsgBox "Bitte füllen Sie alle Felder aus!"
           Exit Sub
       End If
       ' Hier kannst Du den Code zur Übernahme der Werte hinzufügen
       UserForm1.Hide
    End Sub
  4. UserForm anzeigen: Stelle sicher, dass Du den UserForm in einem allgemeinen Modul mit UserForm1.Show aufrufst.


Häufige Fehler und Lösungen

  • Fehler: Eingabe wird sofort geprüft
    Stelle sicher, dass die Prüfung nur beim Klick auf den CommandButton erfolgt. Überprüfe, ob du zu viele Ereignisse oder Code im UserForm_Initialize oder ähnlichem hast.

  • Fehler: Makro stoppt bei leeren Feldern
    Verwende den Exit Sub Befehl im CommandButton-Click-Ereignis, um zu verhindern, dass das UserForm schließt, wenn nicht alle Felder korrekt ausgefüllt sind.

  • Fehler: Falsche Datentypen
    Achte darauf, dass die Eingaben in den TextBoxes auch den erwarteten Datentypen entsprechen. Du kannst dies mit einer zusätzlichen Bedingung im Code überprüfen.


Alternative Methoden

Eine alternative Methode zur Eingabekontrolle ist die Verwendung von TextBox_Exit-Ereignissen. Damit kannst Du die Eingaben bereits bei Verlassen der TextBox prüfen:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox1.Value = "" Or TextBox1.Value = "0" Then
        MsgBox "Eingabe falsch"
        Cancel = True
    End If
End Sub

Diese Methode stoppt den Fokuswechsel, wenn die Eingabe nicht korrekt ist, und fordert den Benutzer zur Korrektur auf.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du die Eingabekontrolle für drei TextBoxes und zwei ListBoxes umsetzen kannst:

Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim control As Control
    Dim allFilled As Boolean
    allFilled = True

    ' Kontrolle der TextBoxes
    For Each control In Me.Controls
        If TypeName(control) = "TextBox" Then
            If control.Value = "" Or control.Value = "0" Then
                MsgBox "Bitte füllen Sie alle Textfelder aus!"
                allFilled = False
                control.SetFocus
                Exit For
            End If
        End If
    Next control

    If allFilled Then
        UserForm1.Hide
        ' Übernahme der Werte hier
    End If
End Sub

Tipps für Profis

  • Verwende Frames: Wenn Du mehrere TextBoxes hast, gruppiere sie in einem Frame. So kannst Du einfacher den Kontrollcode für alle TextBoxes zusammenfassen.

  • Nutze benutzerdefinierte Funktionen: Erstelle Funktionen, die wiederverwendbare Prüfungen für verschiedene Eingabetypen anbieten. So bleibt Dein Code sauber und übersichtlich.

  • Ereignisgesteuerte Programmierung: Überlege Dir, wann und wie Du Eingaben prüfen möchtest. Manchmal ist es sinnvoll, die Prüfung erst nach dem Klick auf den CommandButton durchzuführen.


FAQ: Häufige Fragen

1. Wie kann ich die Eingabe in einer ListBox überprüfen?
Du kannst die Werte der ListBox ebenfalls in der Click-Ereignisprozedur des CommandButtons überprüfen, ähnlich wie bei den TextBoxes.

2. Was mache ich, wenn ich mehrere UserForms habe?
Stelle sicher, dass jeder UserForm seinen eigenen Code hat und die Prüfungen entsprechend angepasst sind, um Konflikte zu vermeiden.

3. Kann ich die Eingabekontrolle auch für andere Steuerelemente verwenden?
Ja, Du kannst ähnliche Prüfungen für ComboBoxen, OptionButtons und andere Steuerelemente durchführen, indem Du die entsprechenden Typen und Eigenschaften überprüfst.

4. Wie kann ich sicherstellen, dass die Eingaben den richtigen Datentyp haben?
Nutze die Funktion IsNumeric oder ähnliche Prüfungen, um sicherzustellen, dass die Eingaben den erwarteten Datentypen entsprechen.

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