Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
908to912
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
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Prüfschleife

Prüfschleife
18.09.2007 09:27:28
Christian
Hallo Experten,
Ich habe eine UserForm in der verschiedene TextBoxes auszufüllen sind.
Sind Angaben vom Eingeber nicht getätigt, so soll eine MsgBox erscheinen, den User auf das Fehlen hinweisen und bei Quittierung mit "OK" auf die auszufüllende TextBox springen.
Ich möchte also, dass der Eingeber bei Missachtung der MsgBox immer wieder die MsgBox erhält.
Also, dass immer wieder bei dem Versuch abzuspeichen die Prüfung durchlaufen wird, ob alle nötigen TextBoxes ausgefüllt sind. Wenn also eine Angabe vergessen wurde, bekommt der Anwender so lange die entsprechende TextBox, bis er die Angabe erfüllt hat oder die Eingabe Abbricht ohne dass eine Angabe gespeichert wird. Ich glaube das mit der Sprungmarke Fehlerende ist ziemlich falsch oder ?
Das habe ich bisher aus den Büchern und meiner wenigen Erfahrung:

Private Sub CommandButton1_Click()
Prüfen
End Sub



Private Sub CommandButton2_Click()
Hide
End Sub



Public Sub Prüfen()
On Error GoTo Fehler
Prüfen:
If TextBox1.Value = "" Then Err.Raise 65535
If TextBox5.Value = "12" And TextBox4.Value = "" Then Err.Raise 65534 Else GoTo Fehlerende
If TextBox5.Value = "14" And TextBox4.Value = "" Then Err.Raise 65534 Else GoTo Fehlerende
If TextBox5.Value = "15" And TextBox4.Value = "" Then Err.Raise 65534 Else GoTo Fehlerende
If TextBox5.Value = "16" And TextBox4.Value = "" Then Err.Raise 65534 Else GoTo Fehlerende
If TextBox3.Value = "" Then Err.Raise 65533
If ComboBox1.Value = "" Then Err.Raise 65531
If TextBox2.Value = "" Then Err.Raise 65529
Eintragen:
Fehler:
If Err.Number = 65535 Then MsgBox ("Filiale bitte eingeben !"): TextBox1.SetFocus: Exit Sub
If Err.Number = 65534 Then MsgBox ("Bitte geben Sie hier unter Bemerkungen Ihren Namen ein !"):  _
_
TextBox5.SetFocus
If Err.Number = 65533 Then MsgBox ("Bitte Betrag angeben !"): TextBox3.SetFocus: Exit Sub
If Err.Number = 65531 Then MsgBox ("Bitte wählen Sie einen Stornogrund aus !"): ComboBox1. _
SetFocus: Exit Sub
If Err.Number = 65529 Then MsgBox ("Zu dieser betreuenden Stelle" + Chr(13) + "ist noch kein  _
Regionalbereich gespeichert" + Chr(13) + "Bitte rufen Sie " + Chr(13) + "unter Tel.: 71 67 !"):  _
TextBox7.SetFocus: Exit Sub
Fehlerende:
Exit Sub
Resume Next
End Sub



Public Sub Eintragen()... usw.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfschleife
18.09.2007 10:04:00
ChrisL
Hallo Christian
Hier mal einen Ansatz:

Private Sub MyErrorMsg(MyErrorNo As Byte, MyTB As Object)
Select Case MyErrorNo
Case 1: MsgBox "Bitte Filiale eingeben."
Case 2: MsgBox "Andere Meldung."
Case 3: MsgBox "Bitte geben Sie hier unter Bemerkungen Ihren Namen ein !"
End Select
MyTB.SetFocus
End Sub



Private Sub CommandButton1_Click()
' Beispiel Schleife Textfeld 1-2
Dim i As Byte
Dim TB As Object
For i = 1 To 2
Set TB = Controls("TextBox" & i)
If TB = "" Then
Call MyErrorMsg(i, TB)
Exit Sub
End If
Next i
' Beispiel mit IF AND OR
If TextBox4 = "" And (TextBox5 = "12" Or TextBox5 = "14" Or TextBox5 = "15" Or TextBox5 = "16")  _
Then Call MyErrorMsg(3, TextBox5)
' Hier gehts weiter
MsgBox "Alles OK, es geht weiter..."
End Sub


Gruss
Chris

Anzeige
AW: Prüfschleife
18.09.2007 10:20:00
Christian
Hallo Chris,
ich hab da etwas nicht verstanden.
Wieso arbeitest Du im mittleren Teil mit "For i= 1 To 2" soweit schein ich noch nicht zu sein mit meinen bescheidenen VBA Kenntnissen.
Sind das die TextBoxes 1 und 2 oder was ist das ?
fragende Grüße
Christian

AW: Prüfschleife
18.09.2007 10:29:00
ChrisL
Hallo Christian
Ja, sind TextBox 1-2. War als Beispiel für eine For...Next-Schleife gedacht, weil wenn du x-mal die gleiche Prüfung machst (z.B. TextBox 1-10 leer oder nicht), dann brauchst du nicht den gleichen Code 10 mal zu wiederholen.
Falls zu kompliziert mit Schleife, schau dir das Beispiel von ede an. Bei kleinen Programmen ist eine Wiederholung ja nicht so tragisch.
Gruss
Chris

Anzeige
AW: Prüfschleife
18.09.2007 10:45:00
Christian
Hallo Chris,
ich hab da etwas nicht verstanden.
Wieso arbeitest Du im mittleren Teil mit "For i= 1 To 2" soweit schein ich noch nicht zu sein mit meinen bescheidenen VBA Kenntnissen.
Sind das die TextBoxes 1 und 2 oder was ist das ?
fragende Grüße
Christian

AW: Prüfschleife
18.09.2007 10:12:00
ede
hallo,
kann zwar deine prüfroutine nicht nachvollziehen, aber auf simple art geht es so:

Sub CommandButton1_Click()
Call prüfen
End Sub



Sub prüfen()
'textbox1
If TextBox1.Value = "" Then
TextBox1.SetFocus
MsgBox "Textbox1 ist leer"
Exit Sub
End If
'textbox2
If TextBox2.Value = "" Then
TextBox2.SetFocus
MsgBox "Textbox2 ist leer"
Exit Sub
End If
'textbox3
If TextBox3.Value = "" Then
TextBox3.SetFocus
MsgBox "Textbox3 ist leer"
Exit Sub
End If
End Sub


gruss

Anzeige
AW: Prüfschleife
18.09.2007 10:58:49
Peter
Hallo Christian
sieh dir die beigefügte Mappe an, vielleicht kannst du daraus etwas in deine Anwendung übernehmen.
https://www.herber.de/bbs/user/46128.xls
Gruß Peter

AW: Prüfschleife
18.09.2007 11:17:16
Christian
Hallo Chris,
hallo ede, hallo Peter,
Ich habe immernoch nicht verstanden, wo Ihr wieder auf den Anfang der Prüfschleife springt, nachdem die MsgBox erschienen und mit OK quittiert wurde, muss es doch weitergehen, entweder mit dem Eintragen in der fehlenden TextBox, oder mit der erneuten Prüfung auf vollständigkeit der Angaben.
Will sagen: Entweder Fehlerprüfung ohne Beanstandungen => dann weiter zu Sub Eintragen, oder Fehlerprüfung mit Beanstandung => dann MsgBox und set Focus auf die Fehlerhafte TextBox!
Grüße Christian

Anzeige
AW: Prüfschleife
18.09.2007 11:23:26
ChrisL
Hallo Christian
Wenn Fehler, dann wird mit 'Exit Sub' die Prozedur abgebrochen und es geht nicht weiter. Wenn kein Abbruch, dann kommt der Code am Ende der Prozdur zum Tragen.
Gruss
Chris

AW: Prüfschleife
18.09.2007 12:19:00
ede
hallo nochmal,
hier mal das beispiel erweitert, wie man die prüfung bei klick auf die schaltfläche durchführt!

Sub CommandButton1_Click()
If prüfen_ok Then
MsgBox "SUPER  -  hier kann weiterverarbeitung stehen"
Else
MsgBox "sorry, leider war eine Textbox fehlerhaft"
End If
End Sub



Function prüfen_ok() As Boolean
'textbox1
prüfen_ok = False
If TextBox1.Value = "" Then
TextBox1.SetFocus
MsgBox "Textbox1 ist leer"
Exit Function
End If
'textbox2
If TextBox2.Value = "" Then
TextBox2.SetFocus
MsgBox "Textbox2 ist leer"
Exit Function
End If
'textbox3
If TextBox3.Value = "" Then
TextBox3.SetFocus
MsgBox "Textbox3 ist leer"
Exit Function
End If
prüfen_ok = True
End Function


gruss

Anzeige
AW: Prüfschleife
18.09.2007 20:12:29
Christian
Danke Ihr beiden habt mir super weitergeholfen Danke-Danke !

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige