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

Forumthread: MsgBox wenn Textbox leer

MsgBox wenn Textbox leer
05.10.2014 23:09:51
Andre
Guten Abend,
ich hoffe ihr könnt mir helfen. Ich habe eine Userform erstellt/abgeändert in der 7 Textboxen gefüllt werden müssen. Da ich mich einer Vorlage aus diesem Forum bedient habe und meine Kenntnisse gering sind habe ich eine Frage. Es sollen alle Textboxen darauf geprüft werden, das sie zu mindest nicht leer sind. In der Vorlage funktioniert das nur für die 1 Textbox. An welcher? stelle muss ich was? einfügen damit auch die anderen Textboxen geprüft werden. Der Text der MsgBox "Bitte Mitarbeiternummer eingeben" soll allerdings für jede zu prüfende Textbox anders sein.
Ggf könnte man auch nur einmal prüfen, ob alle Textboxen "Nicht leer" sind und nur einmal die Meldung bringen das noch Daten fehlen. Weiß nicht was einfacher geht.
(bitte auch angeben wo ich die Änderung einfügen muss
Der Code sieht bislang so aus.
Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim sFile As String
On Error GoTo Fehler
If Me.TextBox1 = "" Then
MsgBox "Bitte Mitarbeiternummer eingeben", vbInformation + vbOKOnly, "Erfassung wird  _
gesendet"
Else
Me.Label10.Visible = True
Me.Repaint
Application.ScreenUpdating = False
Application.StatusBar = "Daten wurden gesendet"
'sFile_Kundenliste - wird im Modul "DieseArbeitsmappe" der Wert zugewiesen
Set wb = Application.Workbooks.Open(Filename:=sFile_Kundenliste)
With wb.Worksheets("Kundenliste")
With .Cells(.Rows.Count, 1).End(xlUp)
.Offset(1, 0) = TextBox1
.Offset(1, 4) = TextBox2
.Offset(1, 5) = TextBox3
.Offset(1, 7) = TextBox4
.Offset(1, 3) = TextBox8
.Offset(1, 12) = ComboBox1
.Offset(1, 13) = TextBox9
.Offset(1, 2) = TextBox10
.Offset(1, 14) = TextBox11
End With
End With
wb.Save
wb.Close
'Neuen Namen in Auswahlliste ergänzen
Unload Me
Application.StatusBar = False
Application.ScreenUpdating = True
End If
Err.Clear
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case Else
Application.StatusBar = False
Application.ScreenUpdating = True
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

Ich Danke für Eure Hilfe

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MsgBox wenn Textbox leer
05.10.2014 23:29:00
Daniel
Hi
hier mal ein Beispiel, wie du den Code ändern musst um mehrer Textboxen zu prüfen (her für die ersten 3, weitere kannst du selbst analog ergänzen)
der Rest vom Code ist dann unverändert.
Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim sFile As String
Dim Check as boolean
On Error GoTo Fehler
Check = Len(Textbox1.Text) = 0
Check = Check Or Len(Textbox2.Text) = 0
Check = Check Or Len(Textbox3.Text) = 0
'--- usw für alle Textboxen die befüllt werden müssen
If Check Then
MsgBox "Bitte alles ausfüllen", vbInformation + vbOKOnly, "Erfassung wird  _
gesendet"
Else
gruß Daniel

Anzeige
AW: MsgBox wenn Textbox leer
06.10.2014 00:35:04
Ewald
Hallo,
das ist sehr oberflächlich, gebe in jede Textbox ein Leerzeichen ein, dann ist der check OK, nur das Ergebnis ist so nicht gewollt.
Hier ist schon etwas mehr Aufwand nötig, damit auch das in den Textboxen steht was erlaubt ist.
Dazu bedarf es aber auch mehr Info was in den einzelnen Textboxen drin stehen darf.
Gruß Ewald

Anzeige
AW: MsgBox wenn Textbox leer
06.10.2014 00:52:35
Daniel
Hallo Ewald
wie würde den eine "nicht oberflächliche Lösung" den aussehen ?
Gruß Daniel

AW: MsgBox wenn Textbox leer
06.10.2014 01:08:58
Ewald
Hallo Daniel,
eigentlich weißt du das ja selber.
Genaues kann man ja auch nicht sagen, da keine Info vorliegen, nur als Beispiel wenn die Textbox als Datum in die Zelle soll und da steht dann Franz drin, dann war der check wohl nix.
Wenn mit Tabs gearbeitet wird und die Tabsreihenfolge feststeht,kann natürlich auch direkt auf die Eingabe reagiert werden.
Nur auch hier keine Info.
Gruß Ewald

Anzeige
AW: MsgBox wenn Textbox leer
06.10.2014 01:31:23
Daniel
jo das wenig infos vorliegen ist klar, beantwortet aber noch nicht meine Frage.
Wie würde deiner Ansicht nach bei den vorliegenden Informaltionen eine "nicht oberflächliche Lösung" aussehen?
bei meinem Lösungsvorschlag ist es ja relativ leicht, angepasste Prüfungen hinzuzufügen, bswp:
um die Eingabe von Leerzeichen abzufangen:
Check = Check And Len(Replace(TextboxX.Text, " ", "") = 0
oder wenn in eine Textbox eine Zahl eingegeben werden soll:
Check = Check or Not(Isnumeric(TextboxX.Text))
oder ein Datum
Check = Check Or Not(IsDate(Textbox1.Text))
da gibts so viele Möglichkeiten, dass ich die gar nicht aufzählen kann.
Wie also sieht dein Vorschlag aus?
Gruß Daniel

Anzeige
AW: MsgBox wenn Textbox leer
06.10.2014 06:07:28
Andre
Guten Morgen ihr Zwei,
Ich danke euch für eure Hilfe und werde versuchen, das heute Abend mal umzubauen.
Zur Frage des Inhaltes der Boxen wollte ich die Fehlenden Infos liefern.
Box 1 eine dreistellige Zahl (ist über MaxLenght eingestellt) und über Code so eingestellt, das diese Box nur Zahlen zulässt
Box 2 4stellige Uhrzeit Format 06:45
Box 3 4stellige Uhrzeit Format 06:45
Box 4 4stellige Uhrzeit Format 06:45
Box 8 ein Buchstabe (wird über Code automatisch immer als Großbuchstabe geschrieben)
Box 9 Buchstaben ungebrenzt
Box 11 vierstellige Zahl.
Ich Danke euch vielmals...jetzt muss ich ab zur Arbeit.
Euch einen schönen Tag

Anzeige
AW: MsgBox wenn Textbox leer
06.10.2014 19:06:12
Andre
Hallo Daniel und Hallo Ewald,
großes Lob an euch. Also die Abänderung funktioniert sehr gut. Die Beispiele in Bezug auf Datum und Leerzeichen haben mir auch weitergeholfen.
Könnt ihr mir noch die Zeile für das Abprüfen des Zeitformates 00:00 nennen?
Die Userform wird Tab bedient. Würde dann bei jedem Tab schon die Meldung Kommen? Das war ja noch ne Frage.
Hab versucht mir die Check Zeile für 00:00 zu ergoogeln. Fehlanzeige.
Gruß Andre und vielen Dank.

Anzeige
AW: MsgBox wenn Textbox leer
06.10.2014 23:22:15
Ewald
Hallo Andre,
hier einmal ein Beispiel für TextBox2 (Uhrzeit)
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Check As Boolean
Dim a As String
a = TextBox2.Text
On Error Resume Next
If a = "" Then Check = True
If Len(a)  5 Then Check = True
If CDbl(Left(a, 2)) > 23 Then Check = True
If CDbl(Right(a, 2)) > 59 Then Check = True
If Mid(a, 3, 1)  ":" Then Check = True
If Check = True Then
Cancel = True
MsgBox "Eingabe falsch, Uhrzeit im Format hh:mm eingeben"
End If
Check = False
End Sub
Es wird überprüft:
Textbox leer,Länge des Textes,die ersten zwei Ziffern nicht >23 (h), die letzten 2 Ziffernnicht >59 (m), Doppelpunkt vorhanden.
Ist ein Fehler vorhanden, kommt die Meldung und die Textbox wird bei TAB nicht verlassen.
Ist die Eingabe OK wird bei TAB die nächste Textbox aktiviert.
Da die Prüfung direkt nach Verlassen der Textbox durchgeführt wird, ist eine Überprüfung über alle Textboxen nicht nötig.
Es ist zwar etwas mehr Code,weil es ja für jede Textbox gemacht werden muß, hat aber den Vorteil das du für jede Textbox eine andere Meldung ausgeben kannst und bei Fehleingabe man nicht einfach per TAB die nächste Textbox anwählen kann.
@Daniel, damit dürfte auch deine Frage beantwortet sein.
Gruß Ewald

Anzeige
AW: MsgBox wenn Textbox leer
06.10.2014 23:36:20
Daniel
HI
der Anwender hat in eine Textbox eine Zeit eingegeben, wenn folgende zwei Bedingungen erfüllt sind.
Sie sind auch in dieser Reihenfolge zu prüfen, die zweite Prüfung darf nur erfolgen, wenn die erste erfüllt ist (sonst Fehlerabbruch)
1. IsDate(Textbox1.text) = True
2. CDate(Textbox1.text) < 1
Gruß Daniel

Anzeige
AW: MsgBox wenn Textbox leer
07.10.2014 10:29:23
Ewald
Hallo Daniel,
ich wollte ja nur zeigen, wie man auch ohne Isdate den Text überprüfen kann.
Ein Beispiel wäre Eingabe sowhl mit als auch ohne Doppelpunkt.
Über die Länge kann dann entschieden werden wie geprüft wird.
Gruß Ewald

AW: MsgBox wenn Textbox leer
07.10.2014 10:43:02
Daniel
Hi Ewald
es gibt meisten viele Wege die zum Ziel führen, selten immer nur einen.
deine Lösung hat noch das problem, dass du nicht prüfst, ob nur Ziffern eingegeben wurden und dann bekommst du bei den CDbls einen Fehlerabbruch, wenn dort ein Buchstabe steht.
eine Prüfung ohne IsDate würde ich so aufbauen:
1. IF TB.Text Like "##:##"
Damit hast du sichergestellt, das die Länge passt der Doppelpunkt an der richtigen Stelle steht und die anderen Zeichen Ziffern sind.
jetzt muss du nur noch prüfen, ob der Wert der ersten zwei stellen nicht >23 ist und die letzen zwei Stellen nicht >59
wenn du nicht abbrichst, falls der Text schon durch die erste Prüfung gefallen ist, solltest du zum Umwandeln nicht CLNG nehmen sondern VAL.
Das erzeugt keinen Fehlerabbruch, wenn der Text nicht in eine Zahl wandelbar ist.
Gruß Daniel

Anzeige
AW: noch kürzer
07.10.2014 10:51:19
Daniel
Und nocch ne möglickeit um zu prüfen, ob in der Textbox eine Uhrzeit steht:
If Textbox1.Text Like "[0-2][0-9]:[0-5][0-9]" And Val(Left(Textbox1.Text, 2)) 
passt in eine Zeile.
Gruß Daniel

AW: noch kürzer
09.10.2014 19:31:38
Andre
Vielen Danke für eure Beiträge, werde dann probieren eure Anregungen umzusetzen.
Großes Lob an euch
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

MsgBox bei leeren Textboxen in Excel UserForms


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
  2. Wähle die UserForm aus, die die Textboxen enthält.
  3. Füge einen CommandButton hinzu, um die Überprüfung der Textboxen zu starten.
  4. Verwende den folgenden VBA-Code für den CommandButton, um sicherzustellen, dass alle Textboxen ausgefüllt sind. Du kannst die Anzahl der Textboxen anpassen, je nachdem, wie viele du hast.
Private Sub CommandButton1_Click()
    Dim wb As Workbook
    Dim sFile As String
    Dim Check As Boolean
    On Error GoTo Fehler
    Check = Len(TextBox1.Text) = 0
    Check = Check Or Len(TextBox2.Text) = 0
    Check = Check Or Len(TextBox3.Text) = 0
    ' Füge hier weitere Textboxen hinzu, falls nötig
    If Check Then
        MsgBox "Bitte alles ausfüllen", vbInformation + vbOKOnly, "Erfassung wird gesendet"
    Else
        ' Dein bestehender Code zum Speichern der Daten
    End If
Err.Clear
Fehler:
    With Err
        Select Case .Number
            Case 0 ' Alles OK
            Case Else
                MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
        End Select
    End With
End Sub
  1. Teste die UserForm, um sicherzustellen, dass die Meldung korrekt angezeigt wird, wenn eine der Textboxen leer ist.

Häufige Fehler und Lösungen

  • Problem: MsgBox wird nicht angezeigt, wenn Textbox leer ist.

    • Lösung: Stelle sicher, dass die Überprüfungslogik korrekt implementiert ist und dass die Textboxen tatsächlich leer sind. Überprüfe die Groß- und Kleinschreibung bei den Textboxen (z.B. TextBox1 vs. Textbox1).
  • Problem: Eingabe von Leerzeichen wird nicht erkannt.

    • Lösung: Nutze Trim(TextBoxX.Text) in der Überprüfung, um nur den tatsächlichen Inhalt zu prüfen.
Check = Check Or Len(Trim(TextBoxX.Text)) = 0

Alternative Methoden

  • Ereignisgesteuerte Überprüfung: Anstatt die Überprüfung beim Klicken auf den Button durchzuführen, kannst du die Textboxen so einstellen, dass sie die Eingabe überprüfen, wenn der Benutzer die Textbox verlässt (z.B. TextBoxX_Exit):
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Trim(TextBox2.Text) = "" Then
        Cancel = True
        MsgBox "Bitte Uhrzeit im Format hh:mm eingeben"
    End If
End Sub
  • Verwende ein Array: Du kannst alle Textboxen in einem Array speichern und dann die Überprüfung in einer Schleife durchführen.

Praktische Beispiele

  1. Überprüfung von Zeitformaten: Für eine Textbox, die eine Uhrzeit erwartet, kannst du den folgenden Code verwenden:
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim a As String
    a = TextBox2.Text
    If Not a Like "##:##" Then
        Cancel = True
        MsgBox "Uhrzeit im Format hh:mm eingeben"
    End If
End Sub
  1. Überprüfung auf Zahlen: Wenn eine Textbox nur Zahlen zulassen soll, kannst du Folgendes verwenden:
If Not IsNumeric(TextBoxX.Text) Then
    MsgBox "Bitte eine Zahl eingeben"
End If

Tipps für Profis

  • Erstelle benutzerdefinierte Fehlermeldungen für jede Textbox, um den Benutzer spezifisch darauf hinzuweisen, was falsch eingegeben wurde.
  • Nutze die Like-Anweisung, um sicherzustellen, dass das Format der Eingabe den Anforderungen entspricht, z.B. für Uhrzeiten oder Zahlen.
  • Verwende On Error Resume Next mit Bedacht, um Fehler zu ignorieren, die nicht kritisch sind, und stelle sicher, dass du sie später behandelst.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Textboxen nur bestimmte Datentypen akzeptieren? Du kannst die IsNumeric-Funktion für Zahlen oder IsDate für Datumswerte verwenden, um die Eingaben zu überprüfen.

2. Was mache ich, wenn ich mehrere Textboxen habe? Du kannst eine Schleife verwenden, um durch ein Array von Textboxen zu iterieren und jede Textbox auf ihre Gültigkeit zu überprüfen.

3. Wie kann ich die UserForm so einstellen, dass die Eingaben direkt beim Verlassen der Textbox überprüft werden? Verwende das Exit-Ereignis jeder Textbox, um die Validierung durchzuführen, bevor der Benutzer zur nächsten Textbox wechselt.

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