Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Druck abbrechen (Ereigniscode ?)

Druck abbrechen (Ereigniscode ?)
07.10.2004 10:18:24
Kersten
Hallo zusammen
Ich ein Makro geschrieben welches einige Druckvorgänge nacheinander erledigt.
Bein ersten Vorgang rufe ich noch über
Application.Dialogs(xlDialogPrint).Show
den Druckdialog auf. Danach laufen die weiteren Vorgänge automatisch weiter.
Wenn ich nun aber Abbrehen drücke läuft der Rest des Makros trotzdem weiter ab.
Wie kann ich nun das Drücken von Abbruch abfangen damit ich die Subroutine verlassen kann und der Rest nicht mehr gedruckt wird?
Danke
Gruß Kersten

Sub Drucken_Standard()
Application.ScreenUpdating = False
'Startseite / Deckblatt Drucken
With Worksheets("Start")
.Visible = True
.Select
End With
With ActiveSheet.PageSetup
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Dim rng As Range
Set rng = Range(Cells(1, 1), _
Cells(Cells(100, 6).End(xlUp).Row, 6))
ActiveSheet.PageSetup.PrintArea = rng.Address
With ActiveSheet.PageSetup
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Application.Dialogs(xlDialogPrint).Show
'Summenblatt drucken
With Worksheets("Auswertung")
.Visible = True
.Select
End With
Range("CP1:CX1").Select
ActiveWindow.Zoom = 100
ActiveWindow.Zoom = True
ActiveSheet.PivotTables("PivotTable1").RefreshTable
ActiveSheet.PivotTables("PivotTable2").RefreshTable
ActiveSheet.PivotTables("PivotTable5").RefreshTable
ActiveSheet.PivotTables("PivotTable6").RefreshTable
Dim rng3 As Range
Set rng3 = Range(Cells(1, 95), _
Cells(Cells(500, 101).End(xlUp).Row, 101))
ActiveSheet.PageSetup.PrintArea = rng3.Address
With ActiveSheet.PageSetup
.Orientation = xlPortrait
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
ActiveWindow.SelectedSheets.PrintOut
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Druck abbrechen (Ereigniscode ?)
Ulf
Wenn der Befehl ActiveWindow.SelectedSheets.PrintOut erstmal abgesetzt ist, kannst du das nicht mehr abbrechen, da der Druckauftrag dann im Speicher des Druckers ist.
Ulf
AW: Druck abbrechen (Ereigniscode ?)
07.10.2004 11:46:08
Kersten
Mpf ?
Zu dem Zeitpunkt wo ich Application.Dialogs(xlDialogPrint).Show aufrufe ist der Prinout-Befehl doch noch gar nicht losgeschickt.
Anzeige
AW: Druck abbrechen (Ereigniscode ?)
Ulf
Sorry, falsch verstanden und kein Plan.
Ulf
AW: Druck abbrechen (Ereigniscode ?)
K.Rola
Hallo,
du musst den Rückgabewert des Dialogs abfragen und entsprechend reagieren.
So gehts vom Grundsatz her:
Option Explicit
Sub teste()
Dim ReturnValue
ReturnValue = Application.Dialogs(xlDialogPrint).Show
If ReturnValue Then
MsgBox "Jetzt wird Druck gemacht!"
Else
MsgBox "Abbruch durch Benutzer!"
End If
End Sub

Gruß K.Rola
Anzeige
AW: Druck abbrechen (Ereigniscode ?)
07.10.2004 13:52:36
Kersten
Danke das hat geklappt
Mann mußte allerding noch ReturnValue mit = False erweitern.
Gruß Kersten
AW: Druck abbrechen (Ereigniscode ?)
K.Rola
Hallo,
tschuldigung, das verstehe ich jetzt nicht.
Es kommt doch ganz darauf an, wie du die Abfrage gestaltest.
Gruß K.Rola
AW: Druck abbrechen (Ereigniscode ?)
07.10.2004 15:43:07
Kersten
Ja ist ja richtig. Bei mir war es aber nötig. Das meinte ich nur. ;-)
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Druckauftrag abbrechen in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen Druckauftrag in Excel VBA abzubrechen, kannst du den Rückgabewert des Druckdialogs abfragen. Hier ist eine einfache Schritt-für-Schritt-Anleitung, wie du dies umsetzen kannst:

  1. Öffne deinen VBA-Editor (ALT + F11 in Excel).

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Sub DruckenMitAbbruch()
        Dim ReturnValue As Boolean
        ReturnValue = Application.Dialogs(xlDialogPrint).Show
        If ReturnValue Then
            ' Druckauftrag fortsetzen
            MsgBox "Jetzt wird Druck gemacht!"
            ' Hier kannst du deinen Druckbefehl einfügen
        Else
            ' Druck abbrechen
            MsgBox "Abbruch durch Benutzer!"
        End If
    End Sub
  4. Führe das Makro aus: Klicke im VBA-Editor auf "Run" oder drücke F5.

  5. Der Druckdialog wird angezeigt und du kannst entscheiden, ob du drucken oder abbrechen möchtest.


Häufige Fehler und Lösungen

  • Fehler: Der Druckauftrag wird trotzdem ausgeführt, auch wenn "Abbrechen" gedrückt wird.

    • Lösung: Stelle sicher, dass du den Rückgabewert ReturnValue in deiner If-Bedingung richtig abfragst, wie im obigen Beispiel gezeigt.
  • Fehler: Der Dialog öffnet sich nicht.

    • Lösung: Vergewissere dich, dass der richtige Dialog aufgerufen wird: Application.Dialogs(xlDialogPrint).Show.

Alternative Methoden

Wenn du eine andere Methode zur Abfrage des Druckbefehls nutzen möchtest, kannst du die PrintOut-Methode in Kombination mit einer Abfrage verwenden. Hier ein Beispiel:

Sub DruckenMitAbfrage()
    Dim Antwort As VbMsgBoxResult
    Antwort = MsgBox("Möchtest du drucken?", vbYesNo + vbQuestion, "Drucken?")
    If Antwort = vbYes Then
        ActiveSheet.PrintOut
    Else
        MsgBox "Druckauftrag abgebrochen."
    End If
End Sub

Diese Methode verwendet eine einfache MsgBox, um den Nutzer zu fragen, ob er drucken möchte.


Praktische Beispiele

Hier ist ein Beispiel, das die Verwendung von Application.Dialogs(xlDialogPrint).Show und die Abfrage des Rückgabewertes kombiniert:

Sub DruckenMitDialog()
    Dim ReturnValue As Boolean
    ReturnValue = Application.Dialogs(xlDialogPrint).Show
    If ReturnValue Then
        ' Beispiel: Druck des aktiven Blattes
        ActiveSheet.PrintOut
    Else
        MsgBox "Druckauftrag wurde abgebrochen."
    End If
End Sub

Mit diesem Code wird der Benutzer gefragt, ob er drucken möchte. Falls er "Abbrechen" wählt, wird der Druckauftrag nicht gesendet.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während des Druckvorgangs zu deaktivieren, was die Performance verbessern kann.
  • Integriere Fehlerbehandlungsroutinen, um sicherzustellen, dass dein Makro auch bei unerwarteten Ereignissen stabil bleibt.
  • Teste dein Makro immer in einer Kopie deiner Datei, um unbeabsichtigte Druckvorgänge zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich verhindern, dass während des Druckens eine Fehlermeldung angezeigt wird? Du kannst Fehlerbehandlungsroutinen in dein Makro einbauen, um unerwartete Fehler abzufangen.

2. Kann ich mehrere Druckaufträge nacheinander abfragen? Ja, du kannst mehrere Dialoge nacheinander aufrufen und den Rückgabewert nach jedem Dialog überprüfen, um zu entscheiden, ob der nächste Druckauftrag ausgeführt werden soll.

3. Was passiert, wenn der Druckauftrag bereits gesendet wurde? Wenn der Druckauftrag bereits gesendet wurde, kannst du ihn in der Regel nicht mehr abbrechen, da er im Drucker gespeichert ist. Achte darauf, den Rückgabewert vor dem PrintOut-Befehl zu überprüfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige