Hallo,
ich habe folgende Frage bezüglich MS Excel: Ich habe eine Tabelle mit mehreren Seitenumbrüchen. Die Zeile 1&2 ist als Wiederholungszeile eingestellt.
Wenn ich nun den Filter einsetze werden die Seiten, auf denen gar keine Zeilen angezeigt werden, trotzdem leer (bis auf die Wiederholungszeilen 1&2) mitgedruckt.
Wie kann ich das verhindern und dafür sorgen, dass wenn der Filter z.B. nur Zeilen für Seite 7 auswirft auch nur die Seite 7 gedruckt wird (ohne dass ich unter Drucken manuell einstelle , dass nur S. 7 gedruckt wird)?
Danke im Voraus!
ich habe folgende Frage bezüglich MS Excel: Ich habe eine
Tabelle mit mehreren Seitenumbrüchen. Die Zeile 1&2 ist als
Wiederholungszeile eingestellt.
Wenn ich nun den Filter einsetze werden die Seiten, auf denen
gar keine Zeilen angezeigt werden, trotzdem leer (bis auf die
Wiederholungszeilen 1&2) mitgedruckt.
Wie kann ich das verhindern und dafür sorgen, dass wenn der
Filter z.B. nur Zeilen für Seite 7 auswirft auch nur die Seite
7 gedruckt wird (ohne dass ich unter Drucken manuell einstelle
, dass nur S. 7 gedruckt wird)?
Hallo Rooster,
mir ist nichts bekannt daß du das mit Exceleinstellungen o.ä.
hinkriegen könntest. Mit Excel-Vba schon.
Da sehe ich ich spontan mehrere denkbare/gangbare Lösungswege.
Zum Testen ist es für dir helfen wollende sowieso mehr als sehr gut
wenn du mit dem obersten Link in FAQ:2606 eine Mappe hochlädst.
In einem Blatt hast du deine Tabelle um die es geht.
Ich nehme an du benutzt „Autofilter“. Lass die Spaltenstruktur wie sie ist, also die Überschriften. Daten brauchen wir nur in einer
Spalte. Dort dann solche Werte wo man nur in dieser Spalte filtert
und es entsteht das was du beschreibst mit leeren Blättern.
Zur Vorbereitung auf die eine Vba-Lösung die mir am einfachsten
umzusetzen erscheint vergib für die einzelnen Druckseiten
fortlaufende Namen wie Seite1, Seite2 usw.
Welche Zeilen pro Druckseite dazugehören erkennst du ja an den
gestrichelten Linien für den Druckbereich.
Bei den Spalten, zähle 10 dazu.
Wenn du also Überschriften von A-H hast und Druckseite1 geht von
A3: H 52 so definiere den namen Seite1 für A3: R 52
Gruß
Reinhard
Hallo Reinhard,
danke für die ausführliche Antwort.
http://www.file-upload.net/download-4574646/Beispiel…
Hier ist eine Beispiel-Datei, die etwa nach den Vorgaben aufgebaut ist… Kannst du mir sagen, wie ich vorgehen muss?
Grüezi Rooster
http://www.file-upload.net/download-4574646/Beispiel…
Hier ist eine Beispiel-Datei, die etwa nach den Vorgaben
aufgebaut ist… Kannst du mir sagen, wie ich vorgehen muss?
Hebe einfach mal den Druckbereich komplett auf - Excel berechnet diesen dann austomatisch selber und druckt nur das Filter-Ergebnis aus.
Mit freundlichen Grüssen
Thomas Ramel
http://www.file-upload.net/download-4574646/Beispiel…
Hier ist eine Beispiel-Datei, die etwa nach den Vorgaben
aufgebaut ist… Kannst du mir sagen, wie ich vorgehen muss?
Hallo Rooster,
Alt+F11, Einfügen—Modul. Dortrein kopierst du den nachstehenden Code.
Schließe den VB-Editor.
In Excel Alt+F8 und lasse das makro „Bereiche“ ausführen.
Es druckt noch nicht, es zeigt die Seitenvorschau.
Soll es auch drucken mußt du im Code das Wort „PrintPreview“ gegen
das Wort „PrintOut“ austauschen. Um das tun zu können Alt+F11,
dort dann links Doppelklick auf das grad vorhin erstellte Modul
was wahrscheinlich modul1 heißt.
Oder über Alt+F8 und „Bearbeiten“…
Gruß
Reinhard
Option Explicit
Sub Bereiche()
Dim N As Long, Von As Long, Bis As Long
Call Loesch
Von = 2
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
For N = 1 To .HPageBreaks.Count
Bis = .HPageBreaks(N).Location.Row - 1
Call Kopier(.Name, N, Von, Bis)
Von = Bis + 1
Next N
Bis = Split(.AutoFilter.Range.Address, "$")(4)
Call Kopier(.Name, N, Von, Bis)
.Activate
End With
Call Loesch
Application.ScreenUpdating = True
End Sub
Sub Kopier(ByVal Blatt As String, ByVal N As Long, ByVal Von As Long, ByVal Bis As Long)
Dim Dummy As Range
On Error Resume Next
With Worksheets(Blatt)
Set Dummy = .Range(.Cells(Von, 1), .Cells(Bis, 6)).SpecialCells(xlCellTypeVisible)
If Err.Number = 0 Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Bereich" & N
.Range("A1:F1").Copy Range("A1")
Dummy.Copy Range("A2")
ActiveSheet.PrintPreview
Else
Err.Clear
End If
End With
End Sub
Sub Loesch()
Dim wks As Worksheet
Application.DisplayAlerts = False
For Each wks In ThisWorkbook.Worksheets
If wks.Name Like "Bereich\*" Then wks.Delete
Next wks
Application.DisplayAlerts = True
End Sub
Hier die entsprechende Datei
http://www.file-upload.net/download-4574646/Beispiel…
Hallo Rooster,
file-upoald ging eben nicht, jetzt ging es wieder:
http://www.file-upload.net/download-4584709/SeitenEi…
Gruß
Reinhard