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

Flexibler Autofilter ohne leere Zellen

Flexibler Autofilter ohne leere Zellen
26.03.2014 12:11:58
Stevo
Hallo zusammen,
ich bin VBA-Neuling und scheitere gerade daran, einen flexiblen Filter in VBA zu basteln. Insgesamt funktioniert alles ganz ordentlich. Einziges Problem ist, dass die leeren Zellen permanent mitgefiltert werden, obwohl ich versucht habe, diese mit "" auszuschließen.
Der flexible Filter liegt im Tabellenblatt "Filter-Auswahl". Dort habe ich im Bereich A5:A10 verschiedene Filter-Vorgaben gemacht, u.a. auch "" um leere Zellen auszuschließen.
Das Tabellenblatt "Unternehmen" ist der Zielbereich, in den ich das Filterergebnis kopieren möchte.
Das Tabellenblatt "Gesamt" ist der Datenbereich, der gefiltert werden soll.
Hier die relevanten Code-Sequenzen:

Sub AutoFilter_Unternehmen()
Dim rngFilterRange As Range
Dim lngCriteriaCount As Long
Dim arrCriteria() As String
Sheets("Unternehmen").Cells.Clear
Sheets("Gesamt").Select
lngCriteriaCount = 10
ReDim arrCriteria(0 To lngCriteriaCount - 1)
arrCriteria(0) = Sheets("Filter-Auswahl").Range("a5")
arrCriteria(1) = Sheets("Filter-Auswahl").Range("a6")
arrCriteria(2) = Sheets("Filter-Auswahl").Range("a7")
arrCriteria(3) = Sheets("Filter-Auswahl").Range("a8")
arrCriteria(4) = Sheets("Filter-Auswahl").Range("a9")
arrCriteria(5) = Sheets("Filter-Auswahl").Range("a10")
Set rngFilterRange = Sheets("Gesamt").Range("a10:i10000")
rngFilterRange.AutoFilter Field:=9, _
Criteria1:=arrCriteria(), _
Operator:=xlFilterValues
Set rngFilterRange = Nothing
Range("a10").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Unternehmen").Range("a5").PasteSpecial xlPasteValuesAndNumberFormats
With Sheets("Gesamt")
If .AutoFilterMode Then
If .FilterMode Then
.ShowAllData
End If
End If
End With
Sheets("Gesamt").Select
End Sub

Was müsste ich tun, damit die leeren Zellen aus dem Filter ausgeschlossen werden?
DANKE EUCH,
Stevo

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Flexibler Autofilter ohne leere Zellen
27.03.2014 02:10:31
fcs
Hallo Stevo,
passe das Einlesen der Filterwerte so an, dass die die Größe des Arrays dynamisch an die Anzahl der nicht leeren Zellen im Bereich A5:A10 auf Blatt Filterauswahl angepasst wird.
Sieht dann etwa wie folgt aus.
Gruß
Franz
Sub AutoFilter_Unternehmen()
Dim rngFilterRange As Range
Dim lngCriteriaCount As Long
Dim arrCriteria() As String
Sheets("Unternehmen").Cells.Clear
Sheets("Gesamt").Select
lngCriteriaCount = 0
For Each rngFilterRange In Sheets("Filter-Auswahl").Range("a5:a10").Cells
If rngFilterRange.Value  "" Then
lngCriteriaCount = lngCriteriaCount + 1
ReDim Preserve arrCriteria(1 To lngCriteriaCount)
arrCriteria(lngCriteriaCount) = rngFilterRange.Text
End If
Next
Set rngFilterRange = Sheets("Gesamt").Range("a10:i10000")
rngFilterRange.AutoFilter Field:=9, _
Criteria1:=arrCriteria(), _
Operator:=xlFilterValues
Set rngFilterRange = Nothing
Range("a10").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Unternehmen").Range("a5").PasteSpecial xlPasteValuesAndNumberFormats
With Sheets("Gesamt")
If .AutoFilterMode Then
If .FilterMode Then
.ShowAllData
End If
End If
End With
Sheets("Gesamt").Select
End Sub

Anzeige
AW: Flexibler Autofilter ohne leere Zellen
27.03.2014 08:18:11
Stevo
Überragend! Danke Dir, Franz.
Viele Grüße
Stevo

29 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige