AW: Druck bestimmter Bereiche
28.11.2008 14:19:44
fcs
Hallo Sönke,
a) Makro-Lösung
Das Makro muss du im VBA-Editor unter Diese Arbeitsmappe einfügen.
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim wks As Worksheet, Zeile As Long
Select Case ActiveSheet.Name
Case "Tabelle1" 'Name(n) der Tabelle(n) mit spezieller Druckroutine
Cancel = True
Application.EnableEvents = False
Set wks = ActiveSheet
With wks
Application.ScreenUpdating = False
'Alle Zeilen im Blatt einblenden
.Rows.Hidden = False
'Ab Zeile 14 prüfen, ob in Spalten J bis P Zeileninhalte vorhanden
For Zeile = 14 To .Cells.SpecialCells(xlCellTypeLastCell).Row
If Application.WorksheetFunction.CountA(.Range(.Cells(Zeile, 10), _
.Cells(Zeile, 16))) = 0 Then
'ggf. zeile ausblenden
.Rows(Zeile).Hidden = True
End If
Next
Application.ScreenUpdating = True
'Drucken
.PrintOut
' .PrintPreview
'Alle Zeilen wieder einblenden
.Rows.Hidden = False
End With
Application.EnableEvents = True
Case Else
'do nothing
End Select
End Sub
b) Formel + Autofilter
Trage in einer Separaten Spalte (z.B Q) ab Zeile 14 folgende Formel ein:
=WENN(ANZAHL2(J14:P14)>0;"X";"")
Alle zu druckenden Zeilen haben dann den Eintrag "X".
Markiere den Zellbereich von Zelle Q13 bis zur letzten Zelle mit Formel (z.B. Q65) schalte jetzt im Menü Daten den Autofilter ein.
Vor dem Drucken selektierst du jetzt im Autofilter-Dropdown den Eintrag "X" um die Leerzeilen auszublenden.
Nach dem Drucken kannst du mit Auswahl (Alle) im Filter die Leerzeilen wieder einblendnen.
Den Druckbereich des Tabellenblatts muss du so einrichen, dass er von A1 bis zur letzten Datenzzeile in Spalte P reicht.
Gruß
Franz