Karen sucht nach einer Möglichkeit, eine gesamte Arbeitsmappe zu drucken, selbst wenn ein Benutzer ein einzelnes Arbeitsblatt drucken möchte. Mit anderen Worten, sie sucht nach einer Möglichkeit, entweder die gesamte Arbeitsmappe oder gar nichts zu drucken – es sollte keine „dazwischen“ -Optionen geben.

Die einzige Möglichkeit, dies zu handhaben, ist die Verwendung eines Makros. Mit VBA können Sie Makros erstellen, die beim Auftreten bestimmter Ereignisse initiiert werden. Eines der Ereignisse, die Makros auslösen können, ist das Ereignis „Drucken“. Wenn jemand zum Drucken auffordert oder eine Druckvorschau anzeigen möchte, wird das BeforePrint-Ereignis des Arbeitsmappenobjekts ausgelöst. Sie können ein eigenes Makro erstellen, das ausgeführt wird, wenn das Ereignis ausgelöst wird.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim sht As Variant     Dim bPreview As Boolean     Dim iResponse As Integer     On Error GoTo ErrHandler

iResponse = MsgBox(prompt:="Do you want to Print Preview?", _         Buttons:=vbYesNoCancel, Title:="Preview?")



Select Case iResponse         Case vbYes             bPreview = True         Case vbNo             bPreview = False         Case Else             GoTo ExitHandler     End Select     Application.EnableEvents = False     For Each sht In Sheets         If sht.Visible Then             sht.PrintOut Preview:=bPreview         End If     Next

ExitHandler:

Application.EnableEvents = True     Cancel = True     Exit Sub

ErrHandler:

MsgBox Err.Description     Resume ExitHandler End Sub

Immer wenn Excel druckbereit ist oder wenn die Druckvorschau aufgerufen wird, wird das BeforePrint-Ereignis ausgelöst und dieses Makro ausgeführt. Das Makro fragt den Benutzer zunächst, ob er eine Druckvorschau erstellen möchte. Eine Select Case-Struktur wird verwendet, um die bPreview-Variable basierend auf der Antwort auf die Frage festzulegen. Die Einstellung von bPreview steuert dann, was passiert.

Wenn der Benutzer bei der Frage nach der Vorschau auf Abbrechen geklickt hat, wird das Makro beendet und der Druckvorgang abgebrochen. Andernfalls wird jedes Arbeitsblatt in der Arbeitsmappe auf Druck oder Vorschau untersucht. Wenn das Arbeitsblatt sichtbar ist, wird es gedruckt und die Preview-Eigenschaft wird auf bPreview gesetzt (True bedeutet, dass das Arbeitsblatt in der Vorschau angezeigt wird; False bedeutet, dass es tatsächlich gedruckt wird).

Beachten Sie, dass das Makro die EnableEvents-Eigenschaft auf False setzt. Dies geschieht, damit beim Drucken oder bei der Vorschau keine anderen Ereignisse ausgelöst werden können.

Wenn EnableEvents aktiviert bleibt, wird jedes Mal, wenn die PrintOut-Methode verwendet wird, das gesamte BeforePrint-Ereignis erneut ausgelöst. Der Benutzer würde in eine Endlosschleife geraten, wenn die Ereignisbehandlung nicht deaktiviert wäre.

Beachten Sie außerdem, dass eines der letzten Ereignisse vor dem Beenden des Makros darin besteht, dass die Eigenschaft Abbrechen auf True festgelegt ist. Dies geschieht, damit der ursprüngliche Druck oder die Druckvorschau-Anforderung, die das BeforePrint-Ereignis generiert hat, abgebrochen wird. Es ist schließlich nicht erforderlich, diese Anforderung abzuschließen, da das Makro die gesamte Druckverarbeitung für den Benutzer durchgeführt hat.

Die Verwendung dieses Druckansatzes hat natürlich eine Einschränkung: Wenn keine Makros aktiviert sind, wird der Handler nicht ausgeführt und der Benutzer kann wie gewünscht drucken. (Wenn Sie beim Öffnen der Arbeitsmappe die Umschalttaste gedrückt halten, werden Makros deaktiviert, und der Benutzer wird meistens gefragt, ob er Makros aktivieren möchte.) Andere Probleme von ExcelTips haben diese Tatsache erörtert.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (11629) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.

Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: Alles oder nichts drucken.