Microsoft Excel

Herbers Excel/VBA-Archiv

Autofilter

Betrifft: Autofilter von: Lisa
Geschrieben am: 06.09.2020 20:53:59

Guten Abend,


ich bin auf der Suche nach einer funktionierenden Lösung für folgendes Problem:

Ich benutze den Autofilter in VBA und dann anschließend möchte ich den Autofilter zurücksetzen und nochmals anwenden.

Im Code sieht das Ganze so aus:


Sub TabelleFiltern()


'Daten löschen

ThisWorkbook.Worksheets("Daten Frontend").Range("D11:W12").Cells.Clear

ThisWorkbook.Worksheets("Daten Frontend").Range("D17:W19").Cells.Clear


ThisWorkbook.Worksheets("Tabelle1").Activate

ActiveSheet.Range("A3:U2000").AutoFilter



'1

'Filtern nach Fachteam

ThisWorkbook.Worksheets("Tabelle1").Range("A3:U2000").AutoFilter 5, "Front"


'Filtern nach SI Check

ThisWorkbook.Worksheets("Tabelle1).Range("A3:U2000").AutoFilter 1, "1"


'Filtern nach VKBG

ThisWorkbook.Worksheets("Tabelle1").Range("A3:U2000").AutoFilter 13, "ü"


'Information transponiert in ein anderes Tabellenblatt kopieren

'(Transponiert und ohne Format zu übertragen)


ThisWorkbook.Worksheets("Tabelle1").Activate

ThisWorkbook.Worksheets("Tabelle1").Range("I3:I2000").Select

Selection.Copy

ThisWorkbook.Worksheets("Daten Front").Activate

ActiveSheet.Range("D11").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

Application.CutCopyMode = False


ThisWorkbook.Worksheets("Tabelle1").Activate

ThisWorkbook.Worksheets("Tabelle1").Range("U3:U2000").Select

Selection.Copy

ThisWorkbook.Worksheets("Daten Front").Activate

ActiveSheet.Range("D12").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

Application.CutCopyMode = False

If Worksheets("Tabelle1").AutoFilterMode Then Selection.AutoFilter

ThisWorkbook.Worksheets("T-GAP").ShowAllData




'2

'Filtern nach Fachteam

ThisWorkbook.Worksheets("Tabelle1").Range("A3:U2000").AutoFilter 5, "Front"


'Filtern nach SI Check

ThisWorkbook.Worksheets("Tabelle1").Range("A3:U2000").AutoFilter 1, "2"


'Filtern nach VKBG

ThisWorkbook.Worksheets("Tabelle1").Range("A3:U2000").AutoFilter 13, "ü"


'Information transponiert in ein anderes Tabellenblatt kopieren

'(Transponiert und ohne Format zu übertragen)


ThisWorkbook.Worksheets("Tabelle1").Activate

ThisWorkbook.Worksheets("Tabelle1").Range("I3:I2000").Select

Selection.Copy

ThisWorkbook.Worksheets("Daten Front").Activate

ActiveSheet.Range("D17").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

Application.CutCopyMode = False


ThisWorkbook.Worksheets("Tabelle1").Activate

ThisWorkbook.Worksheets("Tabelle1").Range("U3:U2000").Select

Selection.Copy

ThisWorkbook.Worksheets("Daten Front").Activate

ActiveSheet.Range("D18").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

Application.CutCopyMode = False

If Worksheets("T-GAP").AutoFilterMode Then Selection.AutoFilter

ThisWorkbook.Worksheets("T-GAP").ShowAllData

End Select



Nun das konkrete Problem:

Die Daten der ersten der Funktion "1" werden genau wie gewünscht in das Tabellenblatt Daten Front geschrieben. Bei "2"

schreibt die Funktion ebenfalls dir Inhalte aus "1" rein und dann die von "2". Allerdings möchte ich dort logischerweise nur die

Inhalte aus "2" drin stehen haben.

Ich hab es bereits mit der Funktion .ShowAllData probiert, das funktioniert leider nicht.


Danke für eure Hilfe!

Betrifft: AW: Autofilter
von: Werner
Geschrieben am: 06.09.2020 22:30:35

Hallo,

teste mal, ohne die ganze Aktiviererei und Selektiererei.

Dann hast du mal "Daten Frontend" und mal "Daten Front". Willst du hier tatsächlich zwei verschiedene Blätter ansprechen?
Sub TabelleFiltern()

Application.ScreenUpdating = False

With ThisWorkbook.Worksheets("Daten Frontend")
    Union(.Range("D11:W12"), .Range("D17:W19")).ClearContents
End With

With ThisWorkbook.Worksheets("Tabelle1")
    .Range("A3:U2000").AutoFilter 5, "Front"
    .Range("A3:U2000").AutoFilter 1, "1"
    .Range("A3:U2000").AutoFilter 13, "ü"
    With .AutoFilter.Range
        .Columns("I").Copy
    End With
    ThisWorkbook.Worksheets("Daten Frontend").Range("D11").PasteSpecial _
    Paste:=xlPasteValues, Transpose:=True
    With .AutoFilter.Range
        .Columns("U").Copy
    End With
    ThisWorkbook.Worksheets("Daten Frontend").Range("D12").PasteSpecial _
    Paste:=xlPasteValues, Transpose:=True
    Application.CutCopyMode = False
    .Range("A3").AutoFilter
    .Range("A3").AutoFilter 5, "Front"
    .Range("A3").AutoFilter 1, "2"
    .Range("A3").AutoFilter 13, "ü"
    With .AutoFilter.Range
        .Columns("I").Copy
    End With
    ThisWorkbook.Worksheets("Daten Frontend").Range("D17").PasteSpecial _
    Paste:=xlPasteValues, Transpose:=True
    With .AutoFilter.Range
        .Columns("U").Copy
    End With
    ThisWorkbook.Worksheets("Daten Frontend").Range("D18").PasteSpecial _
    Paste:=xlPasteValues, Transpose:=True
    .Range("A3").AutoFilter
End With

Application.CutCopyMode = False
End Sub
Gruß Werner

Betrifft: Zusatz
von: Werner
Geschrieben am: 06.09.2020 23:19:14

Hallo,

zusätzlich würde ich zur Sicherheit noch eine Prüfung mit einbauen, ob die jeweilige "Filterkombination" im Tabellenblatt überhaupt vorhanden ist.
Sub TabelleFiltern()

Application.ScreenUpdating = False

With ThisWorkbook.Worksheets("Daten Frontend")
    Union(.Range("D11:W12"), .Range("D17:W19")).ClearContents
End With

With ThisWorkbook.Worksheets("Tabelle1")
    If WorksheetFunction.CountIfs(.Columns(5), "Front", .Columns(1), 1, _
    .Columns(13), "ü") Then
        .Range("A3:U2000").AutoFilter 5, "Front"
        .Range("A3:U2000").AutoFilter 1, "1"
        .Range("A3:U2000").AutoFilter 13, "ü"
        With .AutoFilter.Range
            .Columns("I").Copy
        End With
        ThisWorkbook.Worksheets("Daten Frontend").Range("D11").PasteSpecial _
        Paste:=xlPasteValues, Transpose:=True
        With .AutoFilter.Range
            .Columns("U").Copy
        End With
        ThisWorkbook.Worksheets("Daten Frontend").Range("D12").PasteSpecial _
        Paste:=xlPasteValues, Transpose:=True
        .Range("A1").AutoFilter
    End If
    If WorksheetFunction.CountIfs(.Columns(5), "Front", .Columns(1), 2, _
    .Columns(13), "ü") Then
        .Range("A3").AutoFilter
        .Range("A3").AutoFilter 5, "Front"
        .Range("A3").AutoFilter 1, "2"
        .Range("A3").AutoFilter 13, "ü"
        With .AutoFilter.Range
            .Columns("I").Copy
        End With
        ThisWorkbook.Worksheets("Daten Frontend").Range("D17").PasteSpecial _
        Paste:=xlPasteValues, Transpose:=True
        With .AutoFilter.Range
            .Columns("U").Copy
        End With
        ThisWorkbook.Worksheets("Daten Frontend").Range("D18").PasteSpecial _
        Paste:=xlPasteValues, Transpose:=True
        .Range("A3").AutoFilter
    End If
End With

Application.CutCopyMode = False
End Sub
Gruß Werner

Beiträge aus dem Excel-Forum zum Thema "Autofilter "