öffentlich
Redaktion Druckversion

VBA für Einsteiger - MS Excel 2003 (2)

Arbeitserleichterungen durch eigene Makros

Automatisieren von Spezialfiltern - eine wahre Perle der Bedienung!

Ähnlich dem vorhergehenden Beispiel folgt nun eine Lösung zur Handhabung von Spezialfiltern. Dazu werden die vorbereiteten Kriterienbereiche in Personal.xls verwendet.
Die Kenntnis über die Arbeit mit Spezialfiltern wurde bereits im Kurs vermittelt und wird als bekannt vorausgesetzt.

Achten Sie bitte peinlich genau auf die bereits vorgestellte Reihenfolge von Auswahl und Markierungen.

  1. Das Spezialfilter für die Filterung nach Ort Berlin oder Potsdam soll aufgezeichnet werden. Verfahren Sie genauso, wie in 6.2. beschrieben, und beachten Sie die anfängliche Aktivierung des Ergebnisblattes. Die Prozedur soll BerlinundPotsdam heißen.

  2. Markieren Sie für den Listenbereich im Tabellenblatt Liste auf Zuwachs auf "A1:W150" damit auch später zusätzliche Datensätze mit berücksichtigt werden, falls man mit nicht mehr als 149 Datensätze rechnet, anderenfalls ist der Bereich noch größer zu wählen.

  3. Wählen Sie nach Ausführung des Spezialfilters die Zelle A2 im Ergebnisblatt aus, damit verschwindet die Markierung des Listenkopfes, und beenden die Aufzeichnung

  4. Definieren sie auf der Symbolleiste "Personalauswertung" ein Symbol, ggf. nur in Textdarstellung und weisen Sie das Makro BerlinundPotsdam zu.

So kann das Ergebnis aussehen:

Sub BerlinundPotsdam()

'

Sheets("Ergebnis").Select

Sheets("Liste").Range("A1:W150").AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=Sheets("Kriterien").Range("B12:B14"), CopyToRange:=Range( _

"A1:K1"), Unique:=False

Range("A2").Select

End Sub

Weitere Makros lassen sich leicht auf der auf Grundlage eines bereits bestehenden erstellen.

Kopieren Sie dafür bitte obiges Makro im Visual Basic Editor, geben ihm einen anderen Namen und verändern Sie den Kriterienbereich, z.B:

Sub Potsdamerab4000()

'

Sheets("Ergebnis").Select

Sheets("Liste").Range("A1:W150").AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=Sheets("Kriterien").Range("B3:C4"), CopyToRange:=Range( _

"A1:K1"), Unique:=False

Range("A2").Select

End Sub

Diese Prozedur zeigt alle Potsdamer Mitarbeiter mit einem Gehalt ab 4.000 Euro.

Zuletzt erstellen Sie eine Prozedur für das Filtern aller Mitarbeiter mit bezogenem Gehalt von 1.000 bis 3.000 Euro mit anschließenden Sortieren der Sätze nach Gehalt in absteigender Sortierfolge. Auch diese Prozedur soll über ein Symbol der Symbolleiste "Personalauswertung" aufgerufen werden.

Das Ergebnis könnte wie folgt aussehen:

Sub Gehälter1000bis3000()

'

Sheets("Ergebnis").Select

Sheets("Liste").Range("A1:W150").AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=Sheets("Kriterien").Range("B9:C10"), CopyToRange:=Range( _

"A1:K1"), Unique:=False

Range("A1:K150").Sort Key1:=Range("K2"), Order1:=xlDescending, Header:= _

xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

DataOption1:=xlSortNormal

End Sub

Mit diesem Seminar sollten Sie jetzt Mut haben, weitere Aufgaben automatisch zu lösen. Die nötigen Kenntnisse haben Sie schon erworben.

Mitglied werden, Vorteile nutzen!

  • Sie können alles lesen und herunterladen: Beiträge, PDF-Dateien und Zusatzdateien (Checklisten, Vorlagen, Musterbriefe, Excel-Rechner u.v.a.m.)
  • Unsere Autoren beantworten Ihre Fragen

Downloads zu diesem Beitrag

Über den Autor:

bild117282

Dieter Frommhold, Jahrgang 1943, Diplom-Lehrer für Physik und Mathematik, Verlagslektor und Programmierer. Seit 1971 langjährige Lehrtätigkeit über Betriebssysteme und Programmierung.

Ab 1994 arbe ...

Newsletter abonnieren