Autofilter aktualisieren

Bild

Betrifft: Autofilter aktualisieren
von: Brandt
Geschrieben am: 08.09.2015 13:12:15

Hallo Zusammen
Hätte eine Frage zum Autofilter
Möchte auf Tabellenblatt "Tabelle1" in die Zelle A1 B1 C1.. Werte eingeben, die ich in einem anderen Tabellenblatt "Tabelle2" in Zelle A1 B1 C1 zur Berechnung benötige.
In Tabelle 2 werden die Werte aus den Zellen in einer unteren Tabelle mit Autofilter verarbeitet.
Frage: Wie kann ich den Autofilter in Tabelle 2 z.B durch die Selection change Methode automatisch aktualisieren wenn ich in Tabelle1 die Werte ändere?

Bild

Betrifft: AW: Autofilter aktualisieren
von: Beverly
Geschrieben am: 08.09.2015 14:06:28
Hi,
dazu kannst du das Change-Ereignis des 1. Tabellenblattes verwenden.
Das Aktualisieren des Autofilters kannst du mit dem Makrorekorder aufzeichnen.
Falls dir bei deinen VBA-Kenntnissen diese Aussagen nicht auszeichen, müsstest du deine Arbeitsmappe hochladen, um genauer darauf eingehen zu können.




Bild

Betrifft: AW: Autofilter aktualisieren
von: fcs
Geschrieben am: 08.09.2015 14:28:15
Hallo Brandt,
Es ist einfacher, das Worksheet_Change_Ereignis in Tabelle1 auszuwerten.
Gruß
Franz

'Code unter dem Modul von Tabelle1
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim wksF As Worksheet
  Set wksF = ActiveWorkbook.Worksheets("Tabelle2")
  Select Case Target.Address(False, False, xlA1)
    Case "A1", "B1", "C1"
      'Auto filter in Tabelle2 aktualisieren
      With wksF
        If .FilterMode = True Then .ShowAllData
        With .AutoFilter.Range
          If IsEmpty(Me.Range("A1")) Then
            .AutoFilter Field:=1
          Else
            .AutoFilter Field:=1, Criteria1:=Me.Range("A1").Value
          End If
          If IsEmpty(Me.Range("B1")) Then
            .AutoFilter Field:=2
          Else
            .AutoFilter Field:=2, Criteria1:=Me.Range("B1").Value
          End If
          If IsEmpty(Me.Range("C1")) Then
            .AutoFilter Field:=3
          Else
            .AutoFilter Field:=3, Criteria1:=Me.Range("C1").Value
          End If
        End With
      End With
    Case Else
  End Select
End Sub
oder wenn der Filter in einer Tabelle/Listobject gesetzut werden soll
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim wksF As Worksheet
  Set wksF = ActiveWorkbook.Worksheets("Tabelle2")
  Select Case Target.Address(False, False, xlA1)
    Case "A1", "B1", "C1"
      'Auto Filter in Tabelle/Listobject aktualisieren
      With wksF
        With .ListObjects(1)
          If .AutoFilter.FilterMode = True Then .AutoFilter.ShowAllData
          With .AutoFilter.Range
            If IsEmpty(Me.Range("A1")) Then
              .AutoFilter Field:=1
            Else
              .AutoFilter Field:=1, Criteria1:=Me.Range("A1").Value
            End If
            If IsEmpty(Me.Range("B1")) Then
              .AutoFilter Field:=2
            Else
              .AutoFilter Field:=2, Criteria1:=Me.Range("B1").Value
            End If
            If IsEmpty(Me.Range("C1")) Then
              .AutoFilter Field:=3
            Else
              .AutoFilter Field:=3, Criteria1:=Me.Range("C1").Value
            End If
            End With
          End With
      End With
    Case Else
  End Select
End Sub


Bild

Betrifft: AW: Autofilter aktualisieren
von: Brandt
Geschrieben am: 08.09.2015 17:07:59
Also erstmal Respekt für den Quellcode aber funzt bei mir leider nicht.
Momentan aktualisiere ich den Autofilter in dem ich auf das Tabellenblatt2 gehe und eine Zelle ankliche.
Selection.change
ActiveSheet.Autofilter.ApplyFilter
Könnte man das auch folgendermassen ralisieren
Ist nur eine Idee
'In Tabelle1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Wenn der Wert in der Zelle A1,B1,C1 sich ändert dannn aktualisiere Tabelle 2 Autofilter
If Target.Address = "$A$1, $A$2",$A$3 " Then
'Aktualisiere den Autofilter auf Tabelle 2 z.B mit Befehl im Hintergrund .Autofilter.ApplyFilter
Hier benötige ich Eure Unterstützung

Bild

Betrifft: AW: Autofilter aktualisieren
von: fcs
Geschrieben am: 08.09.2015 18:49:09
Hallo Brandt,
da gab es ein kleines Mißverständnis.
Wenn es "nur" um die Aktualisierung des Filters in Tabelle2 geht, dann vereinfachen sich die Ereignismakros unter Tabelle1 wie folgt:
Gruß
Franz

'Code unter dem Modul von Tabelle1
Private Sub Worksheet_Change(ByVal Target As Range)
  Select Case Target.Address(False, False, xlA1)
    Case "A1", "B1", "C1"
      'Auto filter in Tabelle2 aktualisieren
       ActiveWorkbook.Worksheets("Tabelle2").AutoFilter.ApplyFilter
    Case Else
  End Select
End Sub
'oder bei einem Listobject
Private Sub Worksheet_Change(ByVal Target As Range)
  Select Case Target.Address(False, False, xlA1)
    Case "A1", "B1", "C1"
      'Auto Filter in Tabelle/Listobject aktualisieren
       ActiveWorkbook.Worksheets("Tabelle2").ListObjects(1).AutoFilter.ApplyFilter
    Case Else
  End Select
End Sub


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Autofilter aktualisieren"