73 Aufrufe
Gefragt in Tabellenkalkulation von jelena Mitglied (873 Punkte)

Hallo guten Tag, kann mir bitte jemand dieses Excel Makro erweitern, ich möchte mit denselben Steuerelement beim ersten klick den Filter setzen (derzeitiges Makro) und beim zweiten klick wieder zurücksetzen. Danke.

Sub Filter_Spalte_iw()
    
    Dim objWorksheet As Worksheet   'wenn ein Filter gesetzt dann zuerst �ffnen
    For Each objWorksheet In ThisWorkbook.Worksheets
        With objWorksheet
            If .AutoFilterMode Then
                If .FilterMode Then .ShowAllData
            End If
        End With
    Next

Worksheets("Tabelle22").Range("$iw$2:$iw$974").AutoFilter _
 Field:=1, Criteria1:="x", VisibleDropDown:=True   'True bedeutet der Filterknopf wird angezeigt

   Dim z As Long   'Erste Sichtbare Zeile
         For z = 2 To Cells.SpecialCells(xlCellTypeLastCell).Row   'Zeile 2
         If Rows(z).Hidden = False Then
         Cells(z, 257).Select 'Spalte B
         Exit For
      End If
   Next z

End Sub

2 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.4k Punkte)
Hi Jelena,

wenn ich dein Anliegen richtig verstanden habe, dann versuche es mal so:

Sub Filter_Spalte_iw()
    Dim objWorksheet As Worksheet
    Dim rngBereich As Range
    Dim strZelle
    For Each objWorksheet In ThisWorkbook.Worksheets
        With objWorksheet
            If objWorksheet.Name = "Tabelle22" Then
                If .FilterMode Then
                    .ShowAllData
                Else
                    .Range("$iw$2:$iw$974").AutoFilter _
                     Field:=1, Criteria1:="x", VisibleDropDown:=True   'True bedeutet der Filterknopf wird angezeigt
                    Set rngBereich = .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible)
                    If rngBereich.Cells.Count > 1 Then
                        strZelle = Split(rngBereich.Address, ",")
                        If Range(strZelle(0)).Cells.Count > 1 Then
                            Range(strZelle(0)).Cells(2).Select
                        Else
                            Range(strZelle(1)).Cells(1).Select
                        End If
                    End If
                End If
            Else
                If .AutoFilterMode Then
                    If .FilterMode Then .ShowAllData
                End If
            End If
        End With
    Next
End Sub

Bis später, Karin
0 Punkte
Beantwortet von jelena Mitglied (873 Punkte)
Hallo Karin, vielen Dank.
...