Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
On Error GOTO Problem
19.03.2008 21:06:00
Schallbach
Hallo!
Habe mit folgenden Teil eines Macros ein Problem!
Ich habe ein "On Error GoTo" eingbaut für den Fall dass der Drucker nicht bereit ist. Das funktioniert auch gut aber die MsgBox erscheint auch wenn ich bei den Abfragen mit nein bestätige, das bräuchte ich aber nicht wenn ich sowiso nicht drucke. Was mache ich da falsch?
Bitte um Eure Hilfe!
'Druckauftrag JA oder nein NEIN laut INI B37 1= JA / 0= NEIN
If strDruckAL = 1 Then
'Druck des Instandsetzungsauftrages mit Schärfpreis oder eines Lieferscheines ohne Schärfpreises
Dim intDruckAuftrag As Integer
Dim intDruckLieferschein As Integer
Dim intDruckLieferschein1 As Integer
intDruckAuftrag = MsgBox("Soll ein INSTANDSETZUNGSAUFTRAG mit SCHÄRFPREISEN erstellt werden? ", vbYesNo + vbQuestion)
'Druck Instandsetzungsauftrag = NEIN und Abfrage Lieferschein
If intDruckAuftrag = vbNo Then
intDruckLieferschein = MsgBox("Soll ein LIEFERSCHEIN ohne SCHÄRFPREISE erstellt werden? ", vbYesNo + vbQuestion)
If intDruckLieferschein = vbYes Then
Sheets("Lieferschein").Select
On Error GoTo drucken_nicht_möglich
ActiveWindow.SelectedSheets.PrintOut Copies:=(strDruckAnzahlLieferschein), Collate:=True 'dein Druckbefehl
On Error GoTo 0
If intDruckLieferschein = vbNo Then
End If
End If
End If
'Duck Auftrag und Abfrage für Lieferschen
If intDruckAuftrag = vbYes Then
intDruckLieferschein1 = MsgBox("Soll auch ein LIEFERSCHEIN ohne SCHÄRFPREISE erstellt werden? ", vbYesNo + vbQuestion)
If intDruckLieferschein1 = vbYes Then
Sheets("Lieferschein").Select
On Error GoTo drucken_nicht_möglich
ActiveWindow.SelectedSheets.PrintOut Copies:=(strDruckAnzahlLieferschein), Collate:=True
Sheets("Instandsetzungsauftrag").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=(strDruckAnzahlAuftrag), Collate:=True
On Error GoTo 0
If intDruckLieferschein1 = vbNo Then
Sheets("Instandsetzungsauftrag").Select
On Error GoTo drucken_nicht_möglich
ActiveWindow.SelectedSheets.PrintOut Copies:=(strDruckAnzahlAuftrag), Collate:=True
On Error GoTo 0
End If
End If
End If
drucken_nicht_möglich:
MsgBox "Drucken zur Zeit leider nicht möglich! Prüfe bitte den Drucker!"
End If
Gruss und Dank
Schallbach

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

Betreff
Datum
Anwender
Anzeige
AW: On Error GOTO Problem
19.03.2008 21:29:00
Peter
Hallo Schallbach,
dann setzt zwischen den letzten End If und Drucken_nicht_möglich:
ein Exit Sub
On Error GoTo 0
End If
End If
End If
Exit Sub
drucken_nicht_möglich:
Gruß Peter

AW: On Error GOTO Problem
19.03.2008 21:44:00
Schallbach
Hallo!
Danke für deine Antwort!
Das ist nicht möglich, das Macro ist ja länger als bis zum End If und das soll auf jeden Fall abgearbeitet werden auch wenn nicht gedruckt wird. Ich denke die Msg Box erscheint weil wenn ich mit nein bestätige das ebenfalls ein On Error GOTO 0 ist.
Gruss
Schallbach

Beispiel
19.03.2008 22:08:36
Matthias
Hallo
mal als reduziertes Beispiel

Sub ml()
Dim Frage As String
Frage = MsgBox("jetzt drucken ?", vbOKCancel, "Drucken")
If Frage = vbOK Then
MsgBox "hier Druckbefehl ... "
Else
MsgBox "weiter ohne drucken ... "
End If
MsgBox "und hier gehts weiter  ..."
End Sub


Error wird ja auch nur bei einem Fehler ausgelöst. Das Abbrechen des Druck ist ja kein Fehler. Oder?
Gruß Matthias

Anzeige
AW: Beispiel
19.03.2008 22:33:00
Schallbach
Hallo!
Das Abbrechen eines Druckes ist kein Fehler aber es kommt ein Laufzeitfehler wenn ich drucken bestätige und der Drucker z.B. nicht eingeschaltet ist. Drum hab ich das eingebaut. Das funktioniert auch so wenn der Drucker offline ist dann kommt die MsgBox. Es funktioniert auch wenn ich nein bestätige nur dann kommt auch die MsgBox aber da bräuchte sie nicht zu kommen.
Gruss
Schallbach

AW: Beispiel
19.03.2008 23:12:00
Renee
Hi,
Du brauchst (egal wie lang das Makro nach den End If's noch weitergeht) unmittelbarvor deinem Label drucken_nicht_möglich: einen Exit Sub. Das ist alles.
GreetZ Renée

Anzeige
AW: Beispiel
19.03.2008 23:46:21
Gerd
Hi Renée,
es ist schon etwas spät am Abend.
Aber generell bedeutet 'Exit Sub' "dann" das Ende der Prozedur. :-)
Hi Schalbach,
beschreibe doch bitte mit "wenn...." , "dann....", "sonst..." in Worten, was Du haben möchtest.
Es stehen nun mal mehrere Msgbox-Aufrufe in dem Code.
Ob Du die haben willst, ist irgendwie anhand der bisherigen Erläuterungen nicht schlüssig.
Oder überlege, welche gegenüber dem Vorschlag von Matthias abweichende Struktur, Du
haben möchtest.
Grüße Gerd

AW: Beispiel
19.03.2008 23:59:31
Schallbach
Hallo!
Die Prozedur stimmt so!
Ich mach die Abfrage ob gedruckt werden soll 1. für Auftrag und/oder Lieferschein, wenn Auftrag nein dann nochmals ob trotzden ein Lieferschein beötigt wird.
Das funktioniert ja auch alles wunderbar.
Wenn ich ja sage und der Drucker offline ist dann kommt die MsgBox von On Error GoTo. Wenn ich nein sage funktionierts auch richtig nur als sozusagen Schönheitsfehler kommt dann auch die MsgBox von On ErrorGoTO, denke weil beim "nicht drucken" ebenfalls On ErrorGOTO = 0 ist. Das Macro unterscheidet nicht ob ich "nicht drucke" weil ich nein gesagt habe oder ob der Drucker offline ist.
Gruss
Schallbach

Anzeige
AW: Beispiel
20.03.2008 00:07:44
Schallbach
Hallo!
Es funktioniert ja alles so wie ich will nur das Macro unterscheidet nicht ob ich nicht drucken will und bei der Abfrage "NEIN" gesagt habe oder ob bei "JA" z. B. der Drucker aber offline ist. Für On Error GOTO ist beides gleich und es erscheint sozusgen als Schönheitsfehler die MsgBox von On Error GOTO obwohl sie nicht müsste wenn ich nein zum Drucken sage.
Der OnError GOTO müsste unterscheind können und nur bei einem Druckerfehler melden.
Gruss
Schallbach

AW: Beispiel
20.03.2008 08:45:48
Renee
Hi Gerd,

es ist schon etwas spät am Abend.
Aber generell bedeutet 'Exit Sub' "dann" das Ende der Prozedur. :-)

Booaah, da wär ich nie drauf gekommen...
Die/der liebe Frau/Herr Schallbach, soll doch mal den ganzen Code posten, wenn sie/er so riesige Mühe damit hat...
GreetZ Renée

Anzeige
AW: Beispiel
20.03.2008 21:07:00
Gerd
Hi,
gegen Ende so, da kein "Exit Sub" gewünscht ist ("Hi Renée, nicht gelesen ? ") .
....................................
...................................
...................................
drucken_nicht_möglich:
If Err.Number 0 Then
MsgBox "Drucken zur Zeit leider nicht möglich! Prüfe bitte den Drucker!"
Err.Clear
End If
End If
...............................
..............................
Ich bin mir aber sicher, dass dein Codeteil auf die Hälfte reduziert werden könnte.
Grüße Gerd

174 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige