Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Druck leere Seiten unterbinden

VBA: Druck leere Seiten unterbinden
EarnyToLearny
Hallo Excel-Freunde,
ich verwende die unten stehenden VBA-Anwendungen für die Druckausgabe. Dabei sollen die Seiten die keine Daten enthalten, auch nicht ausgedruckt werden. Funtioniert aber nur insoweit: wenn schon einmal 2 oder mehr Seiten ausgedruckt wurden (mit Daten), dann werden zukünftig auch leere Seiten ausgedruckt, obwohl nur eine Seite mit Daten gefüllt ist. (der Druckbereicht bleibt dann markiert).
Habe ich da etwas vergessen?
Dies steht in der Arbeitsmappe:
  • 
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim WsA As Worksheet
    Dim rngLC As Range
    Set WsA = ActiveSheet
    Set rngLC = LetzteZelle(WsA, 1)
    If Not rngLC Is Nothing Then
    Application.DisplayAlerts = False
    WsA.PageSetup.PrintArea = WsA.Range("A1", rngLC).Address
    Application.DisplayAlerts = True
    Else
    WsA.PageSetup.PrintArea = ""
    Cancel = True
    End If
    End Sub
    


  • Dies steht in einem Modul:
  • 
    Public Function LetzteZelle(oWs As Worksheet, _
    Optional AnzahlUeberschriften As Long, _
    Optional Bereich As Range) As Range
    Dim iCol As Integer
    Dim lRow As Long, lRowA As Long, lRowE As Long, lRowMax As Long
    Dim rngC As Range, rngM As Range
    iCol = 1
    If Bereich Is Nothing Then Set Bereich = oWs.UsedRange
    lRowA = Bereich.Row + AnzahlUeberschriften
    lRowE = Bereich.Row + Bereich.Rows.Count - 1
    For Each rngC In Bereich.Columns
    For lRow = lRowE To lRowA Step -1
    If Len(oWs.Cells(lRow, rngC.Column).MergeArea(1).Text) Then
    iCol = rngC.Column
    lRowMax = Application.WorksheetFunction.Max(1, lRow, lRowMax)
    Exit For 'lRow
    End If
    Next lRow
    Next rngC
    If lRowMax = 0 Then Exit Function
    Set rngM = Bereich.EntireColumn
    'jetzt werden eventuell vorhandene Verbundene Zellen,
    'die sich nach unten über den soeben ermittelten
    'Bereich erstrecken, in diesen mit eingebunden:
    Do
    lRowE = lRowMax
    Set Bereich = Application.Intersect(rngM, oWs.Rows(lRowMax))
    For Each rngC In Bereich
    With rngC
    If .MergeCells Then
    lRowMax = Application.WorksheetFunction.Max _
    (1, .MergeArea.Row + .MergeArea.Rows.Count - 1, lRowMax)
    End If
    End With
    Next rngC
    Loop While lRowMax > lRowE
    Set LetzteZelle = oWs.Cells(lRowMax, iCol)
    End Function
    


  • Anzeige

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

    Betreff
    Benutzer
    Anzeige
    AW: VBA: Druck leere Seiten unterbinden
    11.12.2010 22:47:38
    Beate
    Hallo,
    lösche deine beiden Makros und füge stattdessen ins Codefenster "dieseArbeitsmappe" folgendes Makro ein:
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
        Range("A1").Select
        ActiveSheet.UsedRange
    End Sub

    Damit wird in jedem Blatt der Arbeitsmappe nur der aktuell genutzte Bereich gedruckt.
    Gruß,
    Beate
    Anzeige
    AW: VBA: Druck leere Seiten unterbinden
    11.12.2010 23:18:46
    EarnyToLearny
    Hallo Beate,
    danke für die schnelle Antwort. Habe Deinen Rat befolgt, funktioniert aber immer noch nicht. Ich mache noch folgende Angaben dazu:
    Ich verwende für die Ergebnisse die Formel (KKleinste). Die Auswahlen (Ergebnisse) können maximal 3 Seiten umfassen. Kommen weniger Ergebnisse (Auswahlen) in Frage, die auf einer Seite Platz haben, dann soll eben nur eine Seite ausgedruckt werden.
    Die 2. Seite beginnt z.B. auf A67 und die 3. Seite bei A130. Alle 3 Seiten haben einen gleichen Text am Seitenende, der aber nur erscheint, wenn ein weiteres Feld (auf Seite 2 z.B. C70) mit Daten gefüllt ist.
    Kann es sein, dass der Text am Seitenende das AKTIV auslöst?
    Gruß Werner
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    VBA: Leere Seiten beim Drucken in Excel unterbinden


    Schritt-für-Schritt-Anleitung

    Um leere Seiten beim Drucken in Excel zu entfernen, kannst du ein VBA-Makro verwenden. Hier sind die Schritte, die du befolgen kannst:

    1. Öffne Excel und aktiviere die Entwicklertools: Klicke auf "Datei" > "Optionen" > "Menüband anpassen" und aktiviere "Entwicklertools".

    2. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

    3. Füge das Makro ein:

      • Gehe zu "DieseArbeitsmappe" und füge folgenden Code ein:
      Private Sub Workbook_BeforePrint(Cancel As Boolean)
         Dim WsA As Worksheet
         Dim rngLC As Range
         Set WsA = ActiveSheet
         Set rngLC = LetzteZelle(WsA, 1)
         If Not rngLC Is Nothing Then
             Application.DisplayAlerts = False
             WsA.PageSetup.PrintArea = WsA.Range("A1", rngLC).Address
             Application.DisplayAlerts = True
         Else
             WsA.PageSetup.PrintArea = ""
             Cancel = True
         End If
      End Sub
    4. Füge die Funktion zur Bestimmung der letzten Zelle hinzu:

      • Erstelle ein neues Modul und füge den folgenden Code ein:
      Public Function LetzteZelle(oWs As Worksheet, _
      Optional AnzahlUeberschriften As Long, _
      Optional Bereich As Range) As Range
         ' (Code hier einfügen)
      End Function
    5. Speichere deine Arbeitsmappe als Makro-enabled Datei (mit der Endung .xlsm).

    6. Teste den Druck: Gehe zu "Datei" > "Drucken" und überprüfe, ob leere Seiten nicht mehr gedruckt werden.


    Häufige Fehler und Lösungen

    • Excel druckt leere Seiten hinterher: Stelle sicher, dass das PrintArea korrekt gesetzt ist. Überprüfe den Code auf mögliche Fehler.

    • Leere Seiten in der Seitenansicht: Du kannst die Seitenansicht aktualisieren und leere Seiten löschen, indem du in der Seitenansicht alle leeren Zeilen oder Spalten entfernst.

    • Excel zeigt leere Seiten an: Manchmal kann dies durch formatierte Zellen ohne Daten verursacht werden. Überprüfe deine Zellen und entferne überflüssige Formate.


    Alternative Methoden

    Eine weitere Möglichkeit, leere Seiten zu entfernen, ist die Verwendung der Funktion "Drucken" im Menü:

    1. Wähle den gewünschten Bereich aus.
    2. Klicke auf "Datei" > "Drucken" und wähle "Druckbereich festlegen".
    3. Überprüfe die Druckvorschau und stelle sicher, dass keine leeren Seiten angezeigt werden.

    Praktische Beispiele

    Wenn du eine leere Excel-Tabelle drucken möchtest, aber leere Seiten vermeiden willst:

    • Fülle die relevante Zelle (z.B. A1) und lasse die anderen Zellen leer.
    • Verwende das VBA-Makro, um sicherzustellen, dass nur die gefüllten Zellen gedruckt werden.

    Ein Beispiel für eine Excel-Datei mit nur einer Seite könnte so aussehen:

    A1: "Bericht"
    A2: "Inhalt"

    Wenn du nun druckst, wird nur die Seite mit den Inhalten gedruckt.


    Tipps für Profis

    • Druckbereich dynamisch anpassen: Mit dem oben genannten VBA-Code kannst du den Druckbereich dynamisch anpassen, sodass leere Seiten immer ausgeschlossen werden.

    • Versteckte Zeilen oder Spalten überprüfen: Manchmal können versteckte Zeilen oder Spalten dazu führen, dass Excel leere Seiten druckt. Überprüfe deine Tabelle auf versteckte Elemente.

    • Seitenumbrüche kontrollieren: Gehe zu "Seitenlayout" und überprüfe die Seitenumbrüche. Entferne unnötige Umbrüche, um leere Seiten zu vermeiden.


    FAQ: Häufige Fragen

    1. Warum druckt Excel eine leere Seite mit aus? Excel druckt leere Seiten, wenn der Druckbereich nicht korrekt definiert ist oder wenn Zellen formatiert sind, aber keine Daten enthalten.

    2. Wie kann ich leere Seiten in der Seitenansicht löschen? Du kannst leere Seiten in der Seitenansicht löschen, indem du den Druckbereich anpasst und sicherstellst, dass nur die benötigten Zellen ausgewählt sind.

    3. Was kann ich tun, wenn Excel immer noch leere Seiten druckt? Überprüfe deine VBA-Makros auf Fehler oder setze manuell den Druckbereich, um sicherzustellen, dass nur die gewünschten Daten gedruckt werden.

    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