Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
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
Inhaltsverzeichnis

Druckdialog abbrechen

Druckdialog abbrechen
13.10.2015 15:32:45
Frank
Hallo zusammen,
wie kann ich nach einer IF-Schleife einen Druckdialog abbrechen? Ich habe eine Prüfung. Wenn _ die genannten Auswahlfelder nicht mit einem Kreuz gefüllt wurden, soll der Anwender gefragt werden, ob er weitermachen möchte:

Sub Auswahl_treffen()
Dim x As Double
Dim Nachricht As String
Dim auswahl As Integer
Dim Antwort As Integer
'Festlegung des zu überprüfenden Bereiches aus Auswahlkreuzen
x = Application.CountA(Sheets("Einreicherformular").Range("I36:N36"), Sheets(" _
Einreicherformular").Range("I38:N38"), _
Sheets("Einreicherformular").Range("I40:N40"), Sheets("Einreicherformular").Range("I42:N42") _
_
_
, Sheets("Einreicherformular").Range("I49:N49"), _
Sheets("Einreicherformular").Range("I51:N51"), Sheets("Einreicherformular").Range("I54:N54") _
_
_
, Sheets("Einreicherformular").Range("I57:N57"), _
Sheets("Einreicherformular").Range("I60:N60"))
'Prüfung, genau 9 Kreuze gesetzt wurden. Zwei Kreuze pro Zeile wurden dabei
'durch eine Gültigkeitsprüfung in Excel ausgeschlossen.
If x  9 Then
Nachricht = "Es wurden nicht alle Kreuze bei Einschätzungen und Auswirkungen"
Nachricht = Nachricht & "gesetzt. Bist Du sicher, dass Du mit der Bearbeitung "
Nachricht = Nachricht & "fortfahren möchtest?"
Nachricht = Nachricht + vbNewLine & vbNewLine
auswahl = vbYesNo + vbQuestion
Antwort = MsgBox(Nachricht, auswahl)
'Wenn die Antwort ja ist, wird der Vorgang fortgesetzt. Ist die Antwort nein, wird zur
'ersten Zelle der Einschätzungen und Auswirkungen zurückgekehrt.
If Antwort = vbYes Then
Exit Sub
Else
Sheets("Einreicherformular").Select
End If
End If
End Sub

Die Prüfung läuft gut, wenn ich das Blatt wechsel.

Private Sub Worksheet_Deactivate()
Call Auswahl_treffen
End Sub

Aber bei einem zu startenden Druck

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Call Auswahl_treffen
End Sub

wird zwar gefragt, ob weitergemacht werden soll. Egal ob ja oder nein, der Druckdialog wird angezeigt.
Wie kann ich es schaffen, dass bei einem nein kein Druckdialog angezeigt wird?
Gruß
Frank

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Druckdialog abbrechen
13.10.2015 16:49:15
Luschi
Hallo Frank,
hier mal meine Kurzversion:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'wenn Cancel 'True' --> Druckabbruch
Cancel = Auswahl_treffen()
End Sub
Function Auswahl_treffen() As Boolean
Dim x As Double
Dim Nachricht As String
Dim auswahl As Integer
Dim Antwort As Integer
'Festlegung des zu überprüfenden Bereiches aus Auswahlkreuzen
Antwort = MsgBox("Ja / Nein", vbYesNo, "...")
If Antwort = vbNo Then
Sheets("Einreicherformular").Select
End If
Auswahl_treffen = Not Antwort
End Function
Ich habe aus der 'Sub' eine 'Function' mit Rückgabewert vom Typ 'Boolean'
gemacht. Entscheidend ist diese Stelle: Cancel = Auswahl_treffen()
Alle Ereignisroutinen, die den Parameter 'Cancel As Boolean' im Aufruf haben, kann man mit
'Cancel = True' abbrechen.
Durch 'Auswahl_treffen = Not Antwort' wird die Funktionsrückgabe 'Auswahl_treffen' bei Klick
auf 'Nein' zu 'True' und an 'Cancel' übergeben.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Druckdialog abbrechen
14.10.2015 08:16:32
Frank
Moin Luschi,
besten Dank für den Tipp. Ich habe das Makro noch um einen kleinen Block erweitert, weil der Druckdialog auch bei der Antwort "ja, weitermachen" nicht angezeigt wurde:

Function Auswahl_treffen() As Boolean
Dim x As Double
Dim Nachricht As String
Dim auswahl As Integer
Dim Antwort As Integer
'Festlegung des zu überprüfenden Bereiches aus Auswahlkreuzen
x = Application.CountA(Sheets("Einreicherformular").Range("I36:N36"), Sheets(" _
Einreicherformular").Range("I38:N38"), _
Sheets("Einreicherformular").Range("I40:N40"), Sheets("Einreicherformular").Range("I42:N42") _
, Sheets("Einreicherformular").Range("I49:N49"), _
Sheets("Einreicherformular").Range("I51:N51"), Sheets("Einreicherformular").Range("I54:N54") _
, Sheets("Einreicherformular").Range("I57:N57"), _
Sheets("Einreicherformular").Range("I60:N60"))
'Prüfung, genau 9 Kreuze gesetzt wurden. Zwei Kreuze pro Zeile wurden dabei
'durch eine Gültigkeitsprüfung in Excel ausgeschlossen.
If x  9 Then
Nachricht = "Es wurden nicht alle Kreuze bei Einschätzungen und Auswirkungen"
Nachricht = Nachricht & "gesetzt. Bist Du sicher, dass Du mit der Bearbeitung "
Nachricht = Nachricht & "fortfahren möchtest?"
Nachricht = Nachricht + vbNewLine & vbNewLine
auswahl = vbYesNo + vbQuestion
Antwort = MsgBox(Nachricht, auswahl)
'Wenn die Antwort ja ist, wird der Vorgang fortgesetzt. Ist die Antwort nein, wird zur
'ersten Zelle der Einschätzungen und Auswirkungen zurückgekehrt.
If Antwort = vbNo Then
Sheets("Einreicherformular").Select
Auswahl_treffen = Not Antwort
Else
Exit Function
End If
End If
End Function
Und jetzt läuft das so, wie ich das haben wollte.
Gruß
Frank
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige