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

Forumthread: Druckfunktion in VBA - wie abbrechen?

Druckfunktion in VBA - wie abbrechen?
Peter
Einen guten Morgen an alle!
Mich plagt ein kleines Problem - habe mich ein wenig in VBA versucht, um eine Druckfunktion für meine Cockpitcharts auf Knopfdruck anzubieten. Das drucken und auf die Auswahl des Druckers aus der Liste aller verfügbaren Drucker ist kein Problem.
Jedoch stört mich ein Punkt an meinem Makro, den ich nicht behoben bekomme:
Drückt man im Druckerauswahl-Menü auf "Cancel", wird trotzdem mit dem Standarddrucker gedruckt, man kann also nicht abbrechen. Bin für jeden Hinweis dankbar, was im Code fehlt.
Merci im Voraus!
Peter
Anbei der Code:
Sub PrintAllCPC()
On Error Resume Next
Application.Dialogs(xlDialogPrinterSetup).Show
Sheets(Array("CPC Overview", "CPC LOG", "CPC FIN", "CPC CCC")).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Control Centre").Activate
End Sub

Anzeige

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

Betreff
Benutzer
Anzeige
AW: Druckfunktion in VBA - wie abbrechen?
30.03.2010 11:57:14
Luschi
Hallo eter
so sollte es funktionieren:

Sub PrintAllCPC()
On Error Resume Next
Dim dps As Boolean
dps = Application.Dialogs(xlDialogPrinterSetup).Show
If Not dp Then
''Abbrechen' wurde gedrückt
Exit Sub
End If
Sheets(Array("CPC Overview", "CPC LOG", "CPC FIN", "CPC CCC")).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Control Centre").Activate
End Sub
Zur Erklärung:
dps hat den Wert 'True', wenn 'OK' gedrückt wurde und 'False', wenn 'Abbrechen' gedrückt wurde.
Gruß von Luschi
aus klein-Partis
Anzeige
AW: Druckfunktion in VBA - wie abbrechen?
30.03.2010 12:01:52
Peter
Genial, vielen vielen Dank!!!
;
Anzeige
Anzeige

Infobox / Tutorial

Druckfunktion in VBA: So kannst du einen Druckauftrag abbrechen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Rechtsklicke im Projekt-Explorer auf dein Projekt und wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden Code ein:

    Sub PrintAllCPC()
       On Error Resume Next
       Dim dps As Boolean
       dps = Application.Dialogs(xlDialogPrinterSetup).Show
       If Not dps Then
           ' "Abbrechen" wurde gedrückt
           Exit Sub
       End If
       Sheets(Array("CPC Overview", "CPC LOG", "CPC FIN", "CPC CCC")).Select
       ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
       Sheets("Control Centre").Activate
    End Sub
  4. Speichere dein Projekt und schließe den VBA-Editor.

  5. Führe das Makro aus, um die Druckfunktion mit Druckerauswahl zu testen.


Häufige Fehler und Lösungen

  • Fehler: Das Makro druckt trotzdem, obwohl „Abbrechen“ gewählt wurde.

    • Lösung: Stelle sicher, dass die Variable dps korrekt geprüft wird. Der Code muss If Not dps Then verwenden, um das Abbrechen zu berücksichtigen.
  • Fehler: Der Druckdialog erscheint nicht.

    • Lösung: Überprüfe, ob der Code in einem Modus ausgeführt wird, der den Dialog zulässt.

Alternative Methoden

Eine alternative Methode zum Abbrechen eines Druckauftrags in Excel VBA ist die Verwendung von benutzerdefinierten Dialogen oder UserForms, um eine detailliertere Kontrolle über den Druckvorgang zu ermöglichen. Du könntest beispielsweise ein Formular erstellen, das die Druckeroptionen anzeigt und die Möglichkeit bietet, den Druckauftrag abzubrechen.


Praktische Beispiele

Hier ist ein Beispiel, wie du die Funktion in einem realen Szenario verwenden kannst:

Sub PrintReport()
    ' Diese Funktion druckt einen Bericht und erlaubt das Abbrechen des Druckauftrags
    Dim dps As Boolean
    dps = Application.Dialogs(xlDialogPrinterSetup).Show
    If Not dps Then Exit Sub ' Druckauftrag abbrechen bei "Abbrechen"

    Sheets("Report").PrintOut Copies:=1
End Sub

Diese Funktion ermöglicht es dir, einen Bericht auszudrucken und den Druckauftrag über die Druckerauswahl abzubrechen.


Tipps für Profis

  • Nutze die On Error Resume Next Anweisung, um Programmabstürze zu vermeiden, aber sei vorsichtig, da sie auch das Debugging erschweren kann.
  • Halte deinen Code sauber und dokumentiere wichtige Schritte, um die Wartung zu erleichtern.
  • Experimentiere mit verschiedenen Druckoptionen in der PrintOut Methode, um das Druckerlebnis zu optimieren.

FAQ: Häufige Fragen

1. Wie kann ich eine Tastenkombination zum Abbrechen des Druckauftrags einrichten?
Du kannst eine Tastenkombination in den Excel-Optionen zuweisen, die das entsprechende Makro ausführt.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in den meisten modernen Excel-Versionen (ab 2010) funktionieren, solange VBA unterstützt wird.

3. Kann ich den Druckauftrag auch direkt an einen bestimmten Drucker senden?
Ja, du kannst den Drucker direkt im PrintOut Befehl angeben, indem du den Namen des Druckers hinzufügst.

4. Was mache ich, wenn ich mehrere Arbeitsblätter gleichzeitig drucken möchte?
Du kannst mehrere Arbeitsblätter in einem Array angeben, wie im Beispiel gezeigt: Sheets(Array("Sheet1", "Sheet2")).Select.

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