Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1384to1388
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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

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.

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

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

Anzeige
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

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige