PDA

Vollständige Version anzeigen : Starrer Spezialfilter


Mario Buchholz
03.11.2005, 07:25
Hallo Leute,

ich habe ein kleines Problem mit dem Spezialfilter. Ich möchte einen Spezialfilter auf ein Makro legen. Das funktioniert natürlich.

Range("A4:R20000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sheets("Spezialfilter").Range("c5:c22"), Unique:=True


Nun sind aber nicht immer alle Zeilen bei den Kriterien gefüllt, da der User den Filter selbst vorgeben kann. Stehen leere Zellen bei den Kriterien, geht der Filter baden.
Hat jemand hierzu eine Idee?

Gruß
Mario

Lumpensammler
03.11.2005, 07:32
Hallo, Mario,

da ja zwischen Kriterienbereich und Ausgabenbereich (wenn auf einer Tabelle befindlich) zumindest eine Leerzeile stehen soll, kann für den Kriterienbereich beginnend bei der Ausgangszelle CurrentRegion verwendet werden, um den umgebenden Bereich bis zur ersten Leerspalte und -zeile festzulegen, wobei ich meine, daß die Angabe der Adresse benötigt wird:

Range("C5").CurrentRegion.Address
Gruß
LS

Mario Buchholz
03.11.2005, 07:46
Hallo LS,

ich verstehe Dich nicht ganz. Meine Kriterien stehen auf einem extra Sheet (siehe oben).
Mein Problem ist, dass ich 17 Kriterien als Maximum vorgebe. Sind alle gefüllt, funktioniert der Spezialfilter. Sind aber nur 5 Kriterien gefüllt und die anderen 12 leer, funktioniert das Filtern auf diese 5 Kriterien nicht mehr. Ich suche nach einem Trick, mit dem ich den Spezialfilter austricksen kann.

Gruß
Mario

Lumpensammler
03.11.2005, 08:23
Hallo, Mario,

über eine Wenn-Abfrage kann der genutzte Bereich für den Spezialfilter doch passend ausgelesen bzw. eingeschänkt werden:

Dim sadresse As String
sadresse = Range("C5").CurrentRegion.Address
MsgBox Range(sadresse).Cells(Range(sadresse).Cells.Count).Row
Gruß
LS

Mario Buchholz
03.11.2005, 09:20
:) Ja so klappts. Nun ist nur noch ein kleines Problem. Wenn die vorhandenen Filterkriterien mit einem Leerzeichen gelöscht werden, geht's ja schief.
Gibt es eine Möglichkeit, die Eingabe von Leerzeichen in der Zelle zu unterbinden?
Oder gibt es noch eine andere Lösung, um dieses Problem zu umgehen?

Gruß
Mario

Lumpensammler
03.11.2005, 09:44
Hallo, Mario,

ohne VBA über Daten / Gültigkeit, Benutzerdefiniert; Formel: =C5<>" ", Fehlermeldung ansprechend gestalten.

Per VBA: Worksheet_Change-Ereignis, Länge der Eingabe auf 1 prüfen, dann auf Zeichen " ", Ereignisse ausschalten und "" setzen, Ereignisse wieder anschalten.

Gruß
LS

Mario Buchholz
03.11.2005, 10:04
:) Danke, klappt alles wunderbar.

Gruß
Mario