Es ist schon eine tolle Sache, dieser Excel AutoFilter. Zumal Excel für kleinere Datenbanken durchaus gut geeignet ist. Man leuchtet (z.B. in einer Mappe mit einer Adressen-Aufstellung) die gewünschten Spalte(n) an, und klickt Daten , Filter , AutoFilter. In der ersten Reihe jeder gewählten Spalte (i.d.R. ist hier die Spaltenüberschrift) erscheint dann ein kleiner Button mit einem Pfeil nach unten. Über einen dieser Buttons (sagen wir mal Spalte 'D') kann nun ein bestimmter Wert oder Begriff aus der Spalte 'D' gewählt werden. Ab sofort werden nur noch die Zeilen angezeigt, bei denen der gewählte Begriff in der Spalte 'D' steht. Alle anderen Zeilen werden ausgeblendet. Was aber wenn der Begriff in verschiedenen Spalten steht? Eine VBA- Lösung Das was rauskommt sieht ein bisschen wie eine Report-Ausgabe unter dBase III aus (lang ist's her; aber es war eine außerordentliche Sprache!). Um nicht unnötige Spalten zu durchsuchen kann die Suche im Code auf bestimmte Spalten begrenzt werden: Selection.EntireRow.Range("E1:J1").Select Um hinterher wieder alles (d.h. alle Zeilen) anzuzeigen wird ein zweites Makro verwendet. Hier werden auch eventuell eingeschaltete Autofilter mit abgestellt. Die Zeile: On Error Resume Nextist unbedingt nötig, falls die Anzahl der Schleifendurchgänge mal nicht zu der Anzahl der eingeschalteten Spalten-Filtern passt. Weiterhin ist es wichtig, dass diese Schleife an die Anzahl der verwendeten Spalten angepasst wird. Was ist nötig? In der Excel-Mappe mit der Aufstellung (... den Werten, den Begriffen oder wie im Bild-Beispiel eine Aufstellung von Berichten, die in der Elektronik-Zeitschrift EMA erschienen sind) werden zwei Buttons benötigt: Alles anzeigen und Begriff suchen. Damit die Buttons nach dem Filtern nicht verschwinden, ist es am Besten, wenn man die oberste Zeile fixiert (Cursor in Zelle "A2" und "Fenster" , "Fenster Fixieren") und die Buttons dort ablegt! Nachfolgend der VBA-Code für die beiden Buttons: ..... siehe VBA- Code in der Excel-Datei (Demoprojekt)..... Sicher könnte man die Makros kompakter schreiben und schneller machen, d.h. mit mehr Objekten und so und ohne Zeilen-Zwischenanzeige. Ich meine jedoch, dass die hier gewählte Form [nicht nur für Anfänger Application.ScreenUpdating = False weglassen. Und nun viel Spaß bei den zukünftigen Datenbank- Auswertungen. Dieser Tipp wurde bereits 50.066 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats sevZIP40 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |