vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2021
 
zurück
Rubrik: Excel   |   VB-Versionen: VBA26.01.03
EXCEL (Datenbank) Filter Makro (VBA)

Ein kleines VBA-Makro mit dem sich ein Begriff über mehrere Spalten hinweg suchen lässt.

Autor:   Heinz WölfelBewertung:     [ Jetzt bewerten ]Views:  48.670 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

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?
Was aber wenn der gesuchte Begriff in mehreren Spalten vorkommt und es sollen alle Zeilen mit diesem Begriff (jetzt jedoch aus mehreren Spalten!!!) angezeigt werden? Jetzt kommen wir mit dem Autofilter nicht mehr zurecht !

Eine VBA- Lösung
Das kleine VBA- Makro (mit vielen Kommentarzeilen ) hilft uns hier weiter. Es sucht von oben nach unten in allen Zeilen nach dem (vorher mit 'InputBox' abgefragten) Begriff. Wird dieser in der Zeile nicht gefunden, wird die entsprechende Zeile ausgeblendet.

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 Next
ist 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 ] durchsichtiger ist. Wer den Bildschirm-Aufbau sehen möchte kann ggf. die Zeile:

Application.ScreenUpdating = False

weglassen.

Und nun viel Spaß bei den zukünftigen Datenbank- Auswertungen.

Dieser Tipp wurde bereits 48.670 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(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.
 
   

Druckansicht Druckansicht Copyright ©2000-2021 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel