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

Autofilter per VBA auswählen und drucken

Forumthread: Autofilter per VBA auswählen und drucken

Autofilter per VBA auswählen und drucken
30.08.2016 12:56:51
Micha
Hallo zusammen,
bräuchte kurz eure Hilfe für folgende Fragestellung:
Ich habe eine Tabelle mit etwa 1.500 Zeilen (wird ständig erweitert) sowie mehrerer Spalten.
In Spalte "B" stehen die per Autofilter zu sortierenden Begriff (z.B. Haus, Garten, etc.)
Ich bräuchte ein VBA welches mir nacheinander die Begriffe in "B" auswählt und diese dann - wenn möglich nach vorheriger Bildschirmanzeige - auf den Drucker leitet.
Vielen Dank für die Mühen.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter per VBA auswählen und drucken
30.08.2016 13:31:47
Rudi
Hallo,
als Anregung:
Sub aaa()
Dim objF As Object, oF
Dim arr, i
Set objF = CreateObject("scripting.dictionary")
With ActiveSheet
arr = .Range(.Cells(2, 2), .Cells(Rows.Count, 2).End(xlUp))
End With
For i = 1 To UBound(arr)
objF(arr(i, 1)) = 0
Next
For Each oF In objF
Cells(1, 1).AutoFilter Field:=2, Criteria1:=oF
'ActiveSheet.PrintOut
Next oF
ActiveSheet.ShowAllData
End Sub
Gruß
Rudi
Anzeige
AW: Autofilter per VBA auswählen und drucken
30.08.2016 13:35:50
UweD
Hallo
Sub Filterdruck()
    On Error GoTo Fehler
    Dim TB1, TB2, i As Integer, LR As Integer
    Set TB1 = Sheets("Tabelle1")
    Set TB2 = Sheets.Add(After:=Sheets(Sheets.Count))
    With TB1
        If .FilterMode Then .ShowAllData ' Autofilter alle 
        .Columns("B:B").Copy TB2.Cells(1, 1)
        TB2.Columns(1).RemoveDuplicates Columns:=1, Header:=xlYes
        LR = TB2.Cells(TB2.Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte 
    
        For i = 2 To LR
            .Columns(2).AutoFilter Field:=1, Criteria1:=TB2.Cells(i, 1)
            TB1.PrintOut Preview:=True
        Next
        .ShowAllData
    End With
        Application.DisplayAlerts = False
        TB2.Delete
    Err.Clear
Fehler:
    Application.DisplayAlerts = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

Gruß UweD
Anzeige
AW: Autofilter per VBA auswählen und drucken
30.08.2016 13:56:23
Micha
@ Rudi: Vielen Dank läuft durch !!
@ Uwe: Bildschirmvorschau läuft - allerdings wird nur die Überschrift und nicht die weiteren Werte angezeigt
AW: Autofilter per VBA auswählen und drucken
30.08.2016 14:18:38
UweD
Hallo
Bei mir wird alles angezeigt.
Wie sieht die Seite denn bei einer manuellen Filterung aus.
Wird beim Drucken auch nur die Überschrift ausgegeben?
Hast du evtl. Druckbereiche eingestellt?
LG UweD
Anzeige
AW: Autofilter per VBA auswählen und drucken
30.08.2016 15:08:03
Micha
Hat sich erledigt - waren wirklich die Druckbereiche - nochmals vielen Dank an alle !
Danke für die Rückmeldung owT
30.08.2016 15:22:53
UweD
Anzeige
Anzeige

Infobox / Tutorial

Autofilter per VBA auswählen und drucken


Schritt-für-Schritt-Anleitung

Um den Autofilter per VBA auszuwählen und die gefilterten Daten zu drucken, kannst du folgenden VBA-Code verwenden. Dieser Code durchläuft die Begriffe in Spalte "B", filtert die Daten und druckt sie anschließend.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf "Einfügen" und wähle "Modul", um ein neues Modul zu erstellen.

  3. Kopiere den folgenden Code in das Modul:

    Sub Filterdruck()
       On Error GoTo Fehler
       Dim TB1, TB2, i As Integer, LR As Integer
       Set TB1 = Sheets("Tabelle1")
       Set TB2 = Sheets.Add(After:=Sheets(Sheets.Count))
       With TB1
           If .FilterMode Then .ShowAllData ' Autofilter alle
           .Columns("B:B").Copy TB2.Cells(1, 1)
           TB2.Columns(1).RemoveDuplicates Columns:=1, Header:=xlYes
           LR = TB2.Cells(TB2.Rows.Count, 1).End(xlUp).Row ' letzte Zeile der Spalte
    
           For i = 2 To LR
               .Columns(2).AutoFilter Field:=1, Criteria1:=TB2.Cells(i, 1)
               TB1.PrintOut Preview:=True
           Next
           .ShowAllData
       End With
       Application.DisplayAlerts = False
       TB2.Delete
       Err.Clear
    Fehler:
       Application.DisplayAlerts = True
       If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, um die gefilterten Daten zu drucken.


Häufige Fehler und Lösungen

  • Problem: Nur die Überschrift wird gedruckt.

    • Lösung: Überprüfe die Druckbereiche in den Seitenlayout-Einstellungen. Stelle sicher, dass keine Druckbereiche festgelegt sind, die nur die Überschrift umfassen.
  • Problem: Fehlermeldungen während des Druckens.

    • Lösung: Stelle sicher, dass die angegebene Tabelle ("Tabelle1") existiert und dass du keine Filter aktiv hast, die die Daten unsichtbar machen.

Alternative Methoden

Falls du eine alternative Methode bevorzugst, kannst du die Filterung und das Drucken auch manuell durchführen:

  1. Aktiviere den Autofilter über das Menü "Daten" > "Filtern".
  2. Wähle die gewünschten Kriterien in Spalte "B".
  3. Gehe zu "Datei" > "Drucken", um die gefilterten Daten anzuzeigen und zu drucken.

Diese Methode eignet sich gut, wenn du keine VBA-Kenntnisse hast oder kleinere Datenmengen verarbeiten möchtest.


Praktische Beispiele

Angenommen, du hast folgende Daten in Spalte "B":

B
Haus
Garten
Balkon
Terrasse

Mit dem obigen VBA-Skript wird jeder dieser Begriffe nacheinander gefiltert und die entsprechenden Zeilen werden in der Druckvorschau angezeigt. Du kannst dann entscheiden, ob du die gefilterten Daten drucken möchtest.


Tipps für Profis

  • Optimiere den Code: Du kannst den VBA-Code anpassen, um spezifische Seitenränder, Druckeinstellungen oder einen bestimmten Drucker festzulegen.

  • Nutze die Bildschirmausgabe: Füge TB1.PrintOut Preview:=True ein, um eine Vorschau vor dem Drucken anzuzeigen.

  • Fehlerbehandlung: Implementiere eine robustere Fehlerbehandlung, um spezifische Fehlerursachen herauszufinden, falls das Drucken fehlschlägt.


FAQ: Häufige Fragen

1. Warum wird die Druckvorschau nicht korrekt angezeigt?
Die häufigste Ursache ist, dass Druckbereiche in den Seiteneinstellungen festgelegt sind. Überprüfe die Druckeinstellungen und entferne alle festgelegten Druckbereiche.

2. Kann ich das Skript für andere Spalten verwenden?
Ja, du kannst das Skript anpassen, indem du die Spaltennummer in der AutoFilter-Methode änderst. Achte darauf, dass du die entsprechenden Spalten in deinem Datenbereich verwendest.

3. Funktioniert das Skript in Excel für Mac?
Die oben genannten VBA-Codes sollten auch in Excel für Mac funktionieren, allerdings kann die Benutzeroberfläche leicht abweichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige