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 CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-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

MsgBox wenn Textbox leer

Betrifft: MsgBox wenn Textbox leer von: Andre
Geschrieben am: 05.10.2014 23:09:51

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

  

Betrifft: AW: MsgBox wenn Textbox leer von: Daniel
Geschrieben am: 05.10.2014 23:29:00

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


  

Betrifft: AW: MsgBox wenn Textbox leer von: Ewald
Geschrieben am: 06.10.2014 00:35:04

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


  

Betrifft: AW: MsgBox wenn Textbox leer von: Daniel
Geschrieben am: 06.10.2014 00:52:35

Hallo Ewald
wie würde den eine "nicht oberflächliche Lösung" den aussehen ?
Gruß Daniel


  

Betrifft: AW: MsgBox wenn Textbox leer von: Ewald
Geschrieben am: 06.10.2014 01:08:58

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


  

Betrifft: AW: MsgBox wenn Textbox leer von: Daniel
Geschrieben am: 06.10.2014 01:31:23

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


  

Betrifft: AW: MsgBox wenn Textbox leer von: Andre
Geschrieben am: 06.10.2014 06:07:28

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


  

Betrifft: AW: MsgBox wenn Textbox leer von: Andre
Geschrieben am: 06.10.2014 19:06:12

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.


  

Betrifft: AW: MsgBox wenn Textbox leer von: Ewald
Geschrieben am: 06.10.2014 23:22:15

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


  

Betrifft: AW: MsgBox wenn Textbox leer von: Daniel
Geschrieben am: 06.10.2014 23:36:20

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


  

Betrifft: AW: MsgBox wenn Textbox leer von: Ewald
Geschrieben am: 07.10.2014 10:29:23

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


  

Betrifft: AW: MsgBox wenn Textbox leer von: Daniel
Geschrieben am: 07.10.2014 10:43:02

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


  

Betrifft: AW: noch kürzer von: Daniel
Geschrieben am: 07.10.2014 10:51:19

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)) < 24
passt in eine Zeile.
Gruß Daniel


  

Betrifft: AW: noch kürzer von: Andre
Geschrieben am: 09.10.2014 19:31:38

Vielen Danke für eure Beiträge, werde dann probieren eure Anregungen umzusetzen.
Großes Lob an euch


 

Beiträge aus den Excel-Beispielen zum Thema "MsgBox wenn Textbox leer"