öffentlich
Redaktion Druckversion

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

Arbeitserleichterungen durch eigene Makros

Makros aufzeichnen und behutsam korrigieren

Bevor Sie ein Makro aufzeichnen, müssen Sie genau planen, was mit dem Makro aufgezeichnet werden soll.

Bedenken Sie, dass während der Makroaufzeichnung alle Aktionen genau protokolliert werden, auch die fehlerhaften und die Korrekturen, die sie während der Aufzeichnung durchführen. Damit kann ein Makro zu lang und umständlich werden, d.h. es belegt mehr Speicherplatz als unbedingt nötig, die Laufzeit wird zu groß; das Makro wird somit unhandlich.

Makros werden entweder mit der aktiven Arbeitsmappe oder in einer neuen Arbeitsmappe bzw. in der persönlichen Makroarbeitsmappe gespeichert. Somit ist ein Makro zu unterschiedlichen Zeitpunkten benutzbar, je nachdem, welche Mappe geöffnet ist. (Wenn ein Makro in der persönlichen Makroarbeitsmappe abgelegt wird, ist es immer verfügbar.)

Zunächst soll die Erfassung, die Korrektur und das Löschen von Datensätzen mit anschließender Sortierung nach Abteilung, Name und Vorname in Personal.xls automatisiert werden. Dazu soll für den Aufruf des Makros eine Symbolleiste bei Öffnen der Arbeitsmappe automatisch eingeblendet, beim Schließen wieder ausgeblendet werden.

Zu Beginn wird das Makro mit dem Prozedurnamen "Pflege" in der Mappe gespeichert. Dann wird inhaltlich geplant:

  1. Damit bei Aufruf der aufgezeichneten Prozedur das richtige Arbeitsblatt aktiviert ist, wähle man zuerst ein anderes Blatt der Mappe aus.

  2. Die Datenmaske soll mittels "Daten" - "Maske" angezeigt werden, dazu ist Sorge zu tragen, dass sich in der Liste der Fokus auf "A2" befindet.

  3. Die erscheinende Datenmaske könnte jetzt zur Datenerfassung verwendet werden. Das muss jetzt nicht geschehen und wird deshalb geschlossen.

  4. Danach soll eine Sortierung mit dem Sortierergebnis 1. nach Abteilungsname, 2. nach Nachname und 3. nach Vorname, jeweils aufsteigend, erfolgen.

  5. Der Aufruf erfolge über ein Symbol "Pflege" in einer Symbolleiste "Personalauswertung".

  6. Die Symbolleiste soll an die Mappe angebunden sein und automatisch immer beim Öffnen von Personal.xls eingeblendet, beim Schließen ausgeblendet werden.

Zu 1.: Wählen Sie also nicht die Tabelle Liste sondern ein anderes Blatt in der geöffneten Arbeitsmappe Personal.xls.

Zu 2: Starten Sie die Makroaufzeichnung. Für den Makroname wird Pflege eingegeben. Für die Tastenkombination kann bei gedrückter Umschalttaste "P" getippt werden. Das Makro soll in der Arbeitsmappe gespeichert werden. Nun in das Arbeitsblatt Liste wechseln und dort auf Zelle "A2" klicken. Rufen sie die Maske auf: "Daten" - "Maske".

Zu 3: Zum Schließen der Maske klicken Sie deshalb auf "Schließen". Für das aktive Blatt (ActiveSheet) wurde die Methode (ShowDataForm) aufgezeichnet.

Zu 4. Rufen Sie die Sortierung auf: "Daten2 - "Sortieren ..." . Das Ergebnis soll gemäß Sortierfolge 1. Abteilungsname, 2. Nachname und 3. Vorname jeweils aufsteigend sein. Die Aufzeichnung beenden.

Sehen Sie sich die aufgezeichnete Prozedur an.

Sub Pflege()

' Tastenkombination: Strg+Umschalt+P

Sheets("Liste").Select

Range("A2").Select

ActiveSheet.ShowDataForm

Range("A1:W35").Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range( _

"E2"), Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, _

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

xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _

DataOption3:=xlSortNormal

End Sub

Das Makro hat noch einen Nachteil: Die neu aufgenommene Datensätze sind nicht in die anschließende Sortierung einbezogen, da nur der Datenbereich in Range ("A1:W35") von dieser Methode bearbeitet wird. Deshalb ist die Prozedur noch zu diesem Ergebnis zu ergänzen:

Sub Pflege()

Sheets("Liste").Select

ActiveSheet.ShowDataForm

Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range( _

"E2"), Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, _

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

xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _

DataOption3:=xlSortNormal

Range("A2").Select ' damir wird wieder A2 aktiviert

End Sub

Zu 5.: Legen Sie eine neue Symbolleiste mit dem Namen "Personalauswertung" an und ein fügen Sie ein Symbol hinzu. Die Gestaltung spielt keine wesentliche Rolle, wichtig ist nur der Wiederekennungseffekt. Das Symbol bekommt den Namen Pflege und wird dem Makro "Pflege" zugewiesen. Die Symbolleiste soll nur bei geöffneter Arbeitsmappe sichtbar sein, deshalb werden auf der Codeseite der Arbeitsmappe diese beiden Ereignisprozeduren abgelegt.

Private Sub Workbook_Open()

Application.CommandBars("Personalauswertung").Visible = True

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.CommandBars("Personalauswertung").Visible = False

End Sub

Zu 6. Zuletzt wird die Symbolleiste "Personalauswertung" an die Mappe angebunden..

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