Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
904to908
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
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sprungmarke

Sprungmarke
17.09.2007 12:55:00
Christian
Hallo Experten,
Ich möchte eine Fehlerschleife konstruieren, bei der der Eingeber in eine Userform verpflichtet ist, in der TextBox4.value eine Eingabe zu tätigen.
Das mit der Fehlerschleife bekomme ich hin, aber ich weiss nicht an welcher Stelle die Sprungmarke zu stzen habe. ist da so vielleicht richtig ?
Public Sub Eintragen()
On Error GoTo Fehler
Prüfen:
If TextBox5.Value = "12" And TextBox4.Value = "" Then Err.Raise 65534: GoTo Prüfen Else GoTo Fehlerende
Eintragen:
Fehler:
If Err.Number = 65534 Then MsgBox ("Bitte geben Sie hier unter Bemerkungen Ihren Namen ein !"): GoTo Prüfen
Fehlerende:
Kann mir jemand helfen ?

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sprungmarke
17.09.2007 14:31:25
Wolli
Hallo Christian, Du brauchst hierfür auf keinen Fall eine Fehlerbehandlungsroutine. Wenn die Eingabe nicht Deinen Vorstellungen entsprich, lass einfach die MsgBox aufpoppen und wiederhole dann die Eingabe (do ... loop). Wenn der Benutzer abbricht, kannst Du die Eingabe beenden lassen.
Gruß, Wolli

AW: Sprungmarke
17.09.2007 14:43:00
Christian
Hallo Wolli,
...und das sieht dann soo aus ?
Public Sub Eintragen()
On Error GoTo Fehler
Prüfen:
If TextBox5.Value = "12" And TextBox4.Value = "" Then Err.Raise 65534: GoTo Prüfen Else GoTo Fehlerende
Eintragen:
Fehler:
do
If Err.Number = 65534 Then MsgBox ("Bitte geben Sie hier unter Bemerkungen Ihren Namen ein !")
loop
Fehlerende:
...oder wie!

Anzeige
AW: Sprungmarke
17.09.2007 15:32:40
Wolli
Nein, ungefähr so (Im Falle der Falscheingabe wird gemeldet und beendet - Muss doch nicht mit do .. loop sein!)

Sub Eintragen()
If TextBox5.Value = "12" And TextBox4.Value = "" Then
MsgBox "Bitte geben Sie hier unter Bemerkungen Ihren Namen ein !", vbOKOnly, "Stop!"
Else
'hier kommt der ganze andere Code hin, der
'ausgeführt wird, wenn die Eingabe richtig war.
End If
End Sub


Gruß, Wolli

AW: Sprungmarke
18.09.2007 08:58:16
Christian
Hallo Wolli,
danke dass Du Dich versuchst der Sache anzunehmen.
Vielleicht habe ich mich dusselig ausgedrückt.
Ich möchte, 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.
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 Herrn Stück " + Chr(13) + "unter Tel.: 71 67 !"): TextBox7.SetFocus: Exit Sub
Fehlerende:
Exit Sub
Resume Next
End Sub



Public Sub Eintragen()... usw.

Anzeige
AW: Sprungmarke
18.09.2007 13:24:54
Wolli
Hallo Christian, ich muss ja gestehen, dass ich persönlich nicht gerne mit Fehlernummern und so arbeite. Ganz unpersönlich gilt aber die Programmier-Regel, dass man praktisch immer ohne Sprungmarken und GOTO auskommt. (Dein Code sieht ein bisschen so aus wie mit BASIC von 1980 programmiert :-) )
Hier also meine Version:

Public Sub Prüfen()
Dim richtig As Boolean
richtig = False
Do
If TextBox1.Value = "" Then
MsgBox ("Filiale bitte eingeben !")
TextBox1.SetFocus
ElseIf (TextBox5.Value = "12" Or TextBox5.Value = "14" Or TextBox5.Value = "15" Or _
TextBox5.Value = "16") And TextBox4.Value = "" Then
MsgBox ("Bitte geben Sie hier unter Bemerkungen Ihren Namen ein !")
TextBox5.SetFocus
ElseIf TextBox3.Value = "" Then
MsgBox ("Bitte Betrag angeben !")
TextBox3.SetFocus
ElseIf ComboBox1.Value = "" Then
MsgBox ("Bitte wählen Sie einen Stornogrund aus !")
ComboBox1.SetFocus
ElseIf TextBox2.Value = "" Then
MsgBox ("Zu dieser betreuenden Stelle" + Chr(13) + _
"ist noch kein Regionalbereich gespeichert" + Chr(13) + _
"Bitte rufen Sie Herrn Stück " + Chr(13) + "unter Tel.: 71 67 !")
TextBox7.SetFocus
Else: richtig = True
End If
Loop Until richtig
End Sub


Gruß, Wolli

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige