Hallo zusammen,
ich nutze Excel 2016, bzgl. VBA bin ich noch eher Neuling, meine Frage bezieht sich auf eine Datenbank, die z.B.: 10 Überschriften über den Datensätzen hat und für jede Spalte gibt es ein Makro, welches mir die Spalte nach 5 verschiedenen (vom Anwender z.b. hier in Zelle B5 zu definierenden) Kriterien filtert. Beispiel:
In folgendem Code sind die 5 Filtermöglichkeiten für Spalte B ersichtlich (Standardfilter: größer als Mittelwert / 4 spezielle Filter (z.b. größer als Wert xy)):
Sub FilterA()
'
' FilterA Makro
'
'
Dim i
Dim k
Dim u
Dim o
k = Range("B5")
If k = "> MW" Then 'Standardfilter: >Mittelwert
ActiveSheet.Range("$A$8:$I$100").AutoFilter Field:=2, Criteria1:= _
xlFilterAboveAverage, Operator:=xlFilterDynamic
Else
If Range("B6").Value <> "" Then
i = Range("B6")
If k = "> x %" Then 'Spezieller Filter: >x%
If i <= 98 And i >= 2 Then
ActiveSheet.Range("$A$8:$I$100").AutoFilter Field:=2, Criteria1:=i, _
Operator:=xlTop10Percent
Else
MsgBox "Bitte eine Filtergrenze zwischen 2% und 98% eingeben!"
Exit Sub
End If
End If
If k = ">" Then 'Spezieller Filter: >x
If i >= 0 And i <= 10000 Then
ActiveSheet.Range("$A$8:$I$100").AutoFilter Field:=2, Criteria1:=">" & Replace(i, ",", "."), _
Operator:=xlAnd
Else
MsgBox "Bitte eine Filtergrenze zwischen 0 und 10000 eingeben!"
Exit Sub
End If
End If
If k = "<" Then 'Spezieller Filter: <x
If i >= 0 And i <= 10000 Then
ActiveSheet.Range("$A$8:$I$100").AutoFilter Field:=2, Criteria1:="<" & Replace(i, ",", "."), _
Operator:=xlAnd
Else
MsgBox "Bitte eine Filtergrenze zwischen 0 und 10000 eingeben!"
Exit Sub
End If
End If
If k = "~" Then 'Spezieller Filter: ~ (+/- 15%)
If i >= 0 And i <= 10000 Then
u = 0.85 * i
o = 1.15 * i
ActiveSheet.Range("$A$8:$I$100").AutoFilter Field:=2, Criteria1:=">=" & Replace(u, ",", "."), _
Operator:=xlAnd, Criteria2:="<=" & Replace(o, ",", ".")
Else
MsgBox "Bitte eine Filtergrenze zwischen 0 und 10000 eingeben!"
Exit Sub
End If
End If
Else
MsgBox "Bitte eine Filtergrenze unter dem ausgewählten Filterkriterium eingeben!"
Exit Sub
End If
End If
Gezeigtes Makro gibt es für jede der 10 Spalten, um jede Spalte (auch additiv zueinander) nach den gezeigten 5 Kriterien filtern zu können.
Da nicht jede Zelle in den 10 Spalten befüllt ist, jedoch eine Zeile, in der sich eine leere Zelle in Spalte B befindet, allerdings trotzdem nach Anwendung des Filtermakros (also nachdem nach einem der 5 Kriterien im Makro gefiltert wurde) eingeblendet bleiben soll, wäre es für mich essentiell zu wissen, wie ich es im Code schaffe, dass die leeren Zellen beim Filtern drin bleiben.
Also Kurzfassung: Wie gebe ich jedem den 5 gezeigten Filtermöglichkeiten als jeweils zweites Filterkriterium, dass leere Zellen in der jeweiligen Spalte nicht rausgefiltert werden sollen (z.B.: Soll mir der >-Filter alle Werte größer 50 anzeigen, dann aber die leere Zellen auch eingeblendet lassen) ?
Bin bisher per Online-Recherche und rumprobieren noch nicht drauf gekommen.
Vielen Dank schon vorab für jegliche Art von Hilfe !
Christian
|