Excel VBA - Filter

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Objekte

Arbeitsblatt

Dim Arbeitsblatt

Arbeitsblatt = ActiveSheet.Name

Spalte

Dim Spalte

Spalte = ActiveCell.Column

Zellwert

Dim AktuellerWert As String

AktuellerWert = ActiveCell.Value

Autofilter und Formular (bei leerer Zelle)

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Dim Spalte
Dim AktuellerWert As String
Dim Arbeitsblatt

'Tabellenblatt wird ermittelt
'TabellenName = ActiveWorkbook.ActiveSheet.Name  '"Tickets" wird ausgegeben, das hilft mir nicht

Arbeitsblatt = ActiveSheet.Name
 
Spalte = ActiveCell.Column

AktuellerWert = ActiveCell.Value

'Wenn Autofilter nicht gesetzt, ist setze ihn
 If Not ThisWorkbook.ActiveSheet.AutoFilterMode = True Then
   ThisWorkbook.ActiveSheet.Range("A1").AutoFilter
 End If
  
If AktuellerWert <> "" Then
  'Autofilter auf dem Zellwert
  ThisWorkbook.ActiveSheet.Range(Spalte & ":1").AutoFilter Field:=Spalte, Criteria1:=AktuellerWert, Operator:=xlAnd, VisibleDropDown:=True
Else
  'Filter wird wieder entfernt
  ThisWorkbook.ActiveSheet.AutoFilterMode = False
End If
 
End Sub

Autofilter einschalten

Sub AutoFilterEinschalten()
  If Not ActiveSheet.AutoFilterMode = True Then
    Range("A1").AutoFilter
  End If
End Sub

Speziellen Filter anlegen

Sub RegionFiltern()
 With Tabelle14
  If Not .AutoFilterMode = True Then
   .Range("A1").AutoFilter
  End If
 .Range("A1").AutoFilter Field:=1, Criteria1:="Süd", _
  Operator:=xlAnd, VisibleDropDown:=True
 End With
End Sub
  • Mit der AutoFilter-Methode wurde der Spalte A (Field:=1) das Anzeigekriterium für Zeilen bekannt gegeben (Criteria1:="Süd"). Bei dem Argument Operator gibt es eine größere Auswahl aus mehreren Konstanten, die Sie der folgenden Tabelle entnehmen können.

Autofilter entfernen

Sub FilterEntfernen()
 With Tabelle14
  .AutoFilterMode = False
 End With
End Sub

Auswahl im Autofilter wird zurückgesetzt

Sub AuswahlImFilterZurücksetzen()
 With Tabelle14
  If Not .AutoFilterMode = True Then
   .Range("A1").AutoFilter
  End If
  .Range("A1").AutoFilter Field:=1
 End With
End Sub

Web-Links