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

Forumthread: Drucken mit Vorschau

Drucken mit Vorschau
Stefanglander
Hallo Excelgemeinde,
ich benutze folgenden Code um einen bestimmten Bereich zu drucken:
Private Sub CommandButton3_Click()
Application.ScreenUpdating = False
Range("A1:AE29").Select
Selection.PrintOut Copies:=1
Range("A1").Select
Application.ScreenUpdating = True
End Sub
Leider druckt mein Drucker sofort los, ich würde aber gerne vorher das Druckerauswahlmenü angezeigt bekommen.
Wer mag helfen?
Gruß
Stefan
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: der Makrorekorder
25.10.2009 14:36:34
Daniel
ist immer bereit, dir bei solchen Fragen zu helfen.
lasse ihn mitlaufen und drucke einmal von Hand normal und dann mit Vorschau, schau dir den aufgezeichneten Code an und du wirst den entscheidenden Unterschied feststellen, um dann dein eigenes Makro entsprechend anpassen zu können.
Gruß, Daniel
Anzeige
AW: der Makrorekorder
25.10.2009 14:42:02
Stefanglander
Hallo Daniel,
auf die Idee mit dem Rekorder war ich auch gekommen, aber......
Ich Zeichne das Makro auf und bekomme folgenden Code:
Range("A1:AE30").Select
Selection.PrintOut Copies:=1
wenn ich dne nun in einen CMB einbinde:
Private Sub CommandButton4_Click()
Range("A1:AE30").Select
Selection.PrintOut Copies:=1
End Sub
rattert der Drucke rleider sofort los
Gruß
Stefan
Anzeige
AW: der Makrorekorder
25.10.2009 14:48:14
Daniel
Hi
wenn ich das Drucken als Vorschau mit dem Recorder aufzeichne, dann ergibt das bei mir folgendes Ergebnis:
Sub Makro1()
' Makro1 Makro
' Makro am 25.10.2009 von xxx aufgezeichnet
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True, Collate:= _
True
End Sub
Gruß, Daniel
Anzeige
AW: der Makrorekorder
25.10.2009 15:03:08
Stefanglander
Hallo Daniel,
also ich habe Dein Makro ausprobiert, was auch so ist wie ich es gebrauchen kann aber bei mir sieht das so im Rekorder aus:
Sub Makro18()
' Makro18 Makro
Range("A1:AE30").Select
Selection.PrintOut Copies:=1
End Sub
Danke Dir
Stefan
Anzeige
noch Vorschlag
25.10.2009 14:53:40
Tino
Hallo,
vielleicht geht es so.
In der Seitenansicht kannst Du immer noch bestimmen ob gedruckt werden soll oder nicht.
Private Sub CommandButton3_Click()
Dim strDruckbereich As String
strDruckbereich = ActiveSheet.PageSetup.PrintArea
ActiveSheet.PageSetup.PrintArea = "A1:AE29"
ActiveWindow.SelectedSheets.PrintPreview 'Seitenansicht
Application.OnTime Now + TimeSerial(0, 0, 1), "'PrintAreaReset """ & strDruckbereich & """'"
End Sub
'kommt in ein Modul *******************************
Sub PrintAreaReset(strDruckbereich)
ActiveSheet.PageSetup.PrintArea = strDruckbereich
End Sub
Gruß Tino
Anzeige
AW: noch Vorschlag
25.10.2009 15:06:28
Stefanglander
Hey Tino,
dannke auch Dir, haut super hin.
Eine Frage habe ich aber zu Deinem Code, optisch sieht das genauso aus wie der code von Daniel.
Wo ist der Unterschied?
Gruß
Stefan
Kommentare reingeschrieben.
25.10.2009 15:13:11
Tino
Hallo,
habe ein bar Kommentare reingeschrieben.
Sub PrintAreaReset(strDruckbereich) sollte eigentlich
Sub PrintAreaReset(strDruckbereich As String) lauten.
Private Sub CommandButton3_Click()
Dim strDruckbereich As String
'aktuellen Druckbereich merken
strDruckbereich = ActiveSheet.PageSetup.PrintArea
'Druckbereich auf A1:AE29 festlegen
ActiveSheet.PageSetup.PrintArea = "A1:AE29"
'Seitenansicht aufrufen
ActiveWindow.SelectedSheets.PrintPreview 'Seitenansicht
'nach dem Druck oder der Seitensicht wird PrintAreaReset aufgerufen und
'der alte Druckbereich wieder hergestellt
'OnTime wartet bis der Druckvorgang abgeschlossen oder die Seitenansicht verlassen wird
Application.OnTime Now + TimeSerial(0, 0, 1), "'PrintAreaReset """ & strDruckbereich & """'"
End Sub
'kommt in ein Modul *******************************
Sub PrintAreaReset(strDruckbereich As String)
'alten Druckbereich wieder herstellen
ActiveSheet.PageSetup.PrintArea = strDruckbereich
End Sub
Gruß Tino
Anzeige
:-) Danke (O.T.)
25.10.2009 16:54:59
Stefanglander
.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Drucken mit Vorschau in Excel VBA


Schritt-für-Schritt-Anleitung

Um mit Excel VBA eine Druckvorschau anzuzeigen, bevor der Druckvorgang gestartet wird, kannst du folgenden Code verwenden:

Private Sub CommandButton3_Click()
    Dim strDruckbereich As String
    strDruckbereich = ActiveSheet.PageSetup.PrintArea
    ActiveSheet.PageSetup.PrintArea = "A1:AE29"
    ActiveWindow.SelectedSheets.PrintPreview 'Seitenansicht
    Application.OnTime Now + TimeSerial(0, 0, 1), "'PrintAreaReset """ & strDruckbereich & """'"
End Sub

Sub PrintAreaReset(strDruckbereich As String)
    ActiveSheet.PageSetup.PrintArea = strDruckbereich
End Sub

Dieser Code zeigt die Druckvorschau für den Bereich A1:AE29 an und stellt den vorherigen Druckbereich wieder her, nachdem der Druckvorgang abgeschlossen oder die Vorschau verlassen wurde.


Häufige Fehler und Lösungen

Fehler 1: Excel druckt sofort, ohne die Druckvorschau anzuzeigen.
Lösung: Stelle sicher, dass du die PrintPreview-Methode verwendest, wie im obigen Beispiel gezeigt. Verwende nicht die PrintOut-Methode ohne das Preview:=True Argument.

Fehler 2: Der Druckbereich wird nicht korrekt zurückgesetzt.
Lösung: Überprüfe, ob der PrintAreaReset Sub korrekt aufgerufen wird und der alte Druckbereich als Argument übergeben wird.


Alternative Methoden

Wenn du eine Benutzerform (Userform) zum Drucken mit Vorschau verwenden möchtest, kannst du den folgenden Code verwenden:

Private Sub btnDrucken_Click()
    ActiveWindow.SelectedSheets.PrintPreview
End Sub

Dieser Code kann in einer Userform eingebettet werden, um die Druckvorschau zu starten, ohne dass ein spezifischer Druckbereich festgelegt werden muss.


Praktische Beispiele

  1. Drucken eines spezifischen Bereichs mit Vorschau:

    • Verwende den oben genannten Code in einem Makro, um den Bereich A1:AE29 anzuzeigen.
  2. Drucken mit Auswahlmenü:

    • Mit dem folgenden Code kannst du das Druckerauswahlmenü anzeigen, bevor der Druckvorgang beginnt:
Sub DruckenMitAuswahl()
    Application.Dialogs(xlDialogPrint).Show
End Sub

Tipps für Profis

  • Nutze die Application.ScreenUpdating = False und Application.ScreenUpdating = True, um die Bildschirmaktualisierung während des Druckvorgangs zu deaktivieren, was die Leistung verbessert.
  • Teste deinen Code gründlich, um sicherzustellen, dass Excel nicht anders druckt als angezeigt.
  • Füge Kommentare in deinen VBA-Code ein, um die Funktionsweise zu erläutern und die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich die Druckvorschau direkt in einer Userform integrieren?
Du kannst die PrintPreview-Methode in einem Button-Klick-Ereignis der Userform verwenden, um die Druckvorschau anzuzeigen.

2. Was tun, wenn Excel druckt, ohne die Vorschau anzuzeigen?
Stelle sicher, dass du PrintPreview anstelle von PrintOut ohne das Preview-Argument verwendest. Überprüfe auch, ob es andere Makros oder Einstellungen gibt, die das Verhalten beeinflussen.

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