Programmierung von Macros mit Visual Basic for Applications Homepage von PS-Trainer
- KalkulationsProgramme
-
an PS-Trainer
Die Tabellenkalkulation Excel ermöglicht nicht nur
die Verwendung zahlreicher Funktionen und Optionen im "normalen"
Excel-Bereich. Darüber hinaus gibt es die Möglichkeit, Excel
mit einer eigenen Programmiersprache individuell zu erweitern. Mit VBA
können sie mehrere Arbeitsschritte zu Macros verbinden.
Das erleichtert die Arbeit und macht Spass !
Visual Basic for Applications (VBA) ist eine Adaptierung
der Programmiersprache von Microsoft. Gegenüber VB sind hier die
Objekte und Methoden der Tabellenkalkulation enthalten - Sie können
daher Tabellen, Bereiche, Zellen, Funktionen und und deren Werte verwenden
und nach Belieben beeinflussen.
Das erste Macro:
Ein Macro ist ein kleines (VBA)-Programm, das in einer Kalkulationsdatei
eingebettet ist. Damit werden z.B.. mehrere manuell ausgeführte Arbeitsschritte
zusammengefasst und automatisch ausgeführt.
Sie können den Macro-Assistenten verwenden, um ein Macro automatisch
zu erstellen:
Klicken sie an eine beliebige Stelle des Kalkulationsblattes ausser A1.
Befehl
Extras / Macro / Aufzeichnen
Eintragen: Macro-Name (z.B. TestMacro 1) , Tastenkombination (vorläufig
frei lassen), Beschreibung ( ... ). OK-Button klicken. Das Macro-Fenster
verkleinert sich und bleibt vorne, solange sie "Programmieren".
Klicken sie
auf Zelle A1 und tragen sie einen Text ein (z.B. "Das ist ein Test...").
Schliessen sie die Eingabe, z.B. durch Klick auf das grüne Hakerl.
Beneden sie
die Aufzeichnung durch Klick auf das dunkelblaue Quadrat im Macro-Fenster
("Aufzeichnung beenden") oder durch Befehl Extras / Macro / Aufzeichnung beenden. Das Macro
ist nun fertig programmiert.
Macro ausprobieren: Löschen
oder ändern sie den Eintrag in A1 und klicken sie auf irgendeine
andere Zelle - Sonst können sie nachfolgend keine Macro-Wirkung sehen.
Befehlen sie
Extras / Macro / Macros.
Das Macro-Auswahlfenster mit allen angelegten Macros erscheint. Wählen
sie ihr Macro aus und klicken sie "Ausführen". Das Macro wird
ausgeführt und arbeitet genau die gleichen Schritte ab, wie sie von
ihnen vorgegeben wurden.
Wenn sie ihr Arbeitsblatt speichern, wird das Macro ebenfalls gespeichert
und steht jederzeit zu ihrer Verfügung.
Auf diese Weise können sie alle manuellen Arbeitsschritte durch Macros
ausführen lassen. Dazu eignen sich oft wiederholte Arbeitsvorgänge.
Der Vorteil von Macros liegt nicht nur in der rascheren Arbeit, sondern
auch bei der Vermeidung von Fehlern, wie sie bei manuellen Routine-Arbeiten
oft vorkommen.
Standard-Daten
für ein Arbeitsblatt:
Auf einem professionellen Arbeitsblatt finden sie immer an gut sichtbarer
Stelle:
Titel, Firma, Name, Datum und Version, meist auch eine Kurz-Beschreibung.
Sie können ein Macro programmieren, das diese Daten komplett an eine
bestimmte Stelle ihres Arbeitsblattes schreibt, und sich damit lästige
Arbeit sparen. Legen sie
ein Macro "Standarddaten" an, so wie im Beispiel "Das erste
Macro" beschrieben. Setzen sie dabei das aktuelle Datum ein, lassen
sie Titel und Beschreibung frei. Testen sie
die korrekte Funktion ihres Macros. Es ist üblich, Macros zuerst
in einfacher Form zu erstellen, dann schrittweise zu verbessern. Lagen sie
ein neues Test-Makro mit dem aktuellen Datum an:
Tragen sie während der Aufzeichnung in das Datum-Feld die Funktion
=HEUTE() ein und formatieren sie nach Wunsch.
Sie werden nun
dieses Heute-Testmakro in ihr Makro "Standard-Daten" eintragen:
Es gibt u.a. folgende Wege zum VBA-Programm:
Befehl Extras / Macro / Macros, dann Macro auswählen
und Klick auf "Bearbeiten"
oder Extras / Macro / Visual Basic Editor
oder Tastatur-Befehl Alt+F11 Sie sehen
nun den VBA-Programmtext der beiden Makros. Sie müssen den Code nicht
genau verstehen, aber ungefähr erkennen, wo was programmiert wird.
Um ein Makro zu ändern, verfahren sie immer nach dem Prinzip "make
before break":
Sie verwandeln jene Programmzeile(n), die verschwinden sollen, in einen
"Kommentar". Dann führen sie die Änderung durch und
testen ihr neues Programm. Wenn der Test gut läuft, löschen
sie zuletzt die überflüssigen Kommentare.
Der Original-Text im Macro Standarddaten könnte lauten
Offenbar wird in VBA die englische Funktion verwendet, obwohl im Arbeitsblatt
die deutsche aufscheint.
Sie verwandeln durch Voransetzen eines Hochkomma (single quote) die alte
Version in einen (nicht auszuführenden) Kommentar und fügen
die neue Version ein:
Nun wird zwar
das Erstellungs-Datum automatisch richtig eingetragen, dieses ändert
sich jedoch täglich - das ist unerwünscht und muss noch verbessert
werden. Erstellen sie
ein weiteres Macro, mit dem sie die Funktion durch ihren aktuellen Wert
ersetzen:
Klicken sie auf jene Zelle, welche die Funktion =HEUTE() enthält.
Starten sie ein neues Testmakro "Wert" und befehlen sie Bearbeiten / Kopieren
Bearbeiten / Inhalte einfügen / Werte
Quittieren sie mit "OK". Nun haben
sie das aktuelle Datum zuerst berechnet, dann aber fixiert.
Ergänzen sie nun ihr Macro "Standarddaten" durch ihr neues
Macro:
Das Macro
schreibt nun tatsächlich das aktuelle Datum, dieses wird später
nicht mehr geändert, da es sich um einen Wert, nicht um eine Funktion
handelt.
Ergänzen
sie ihr Macro nach der gleichen Methode mit professioneller Formatierung
(Schrift, Farbe, Grösse, Rahmen, Hintergrund...):
Erzeugen sie ein Testmacro, welches die gewünschte Formatierung durchführt,
integrieren sie dessen Code sinnvoll in ihr Macro "Standarddaten".
Nun haben
sie ein professionelles Macro erstellt. Das erfordert auch eine passende
weitere Verarbeitung: Es ist amateurhaft kompliziert, ihr Macro umständlich
mit Menu Extra / Macros / Macro / Standarddaten / Ausführen
zu starten - Sehen sie sich daher die nächsten Themen an, mit deren
Hilfe sie ihr Macro elegant in Excel integrieren.
Macro-Bibliothek:
Das Macro "Standarddaten" wird zwar zusammen mit ihrem Arbeitsblatt
gespeichert, ist jedoch nicht in neuen Arbeitsblättern nicht enthalten.
Sie können beliebig viele Macros in eigenen VBA-Bibliotheken speichern,
die in jedem neuen Arbeitsblatt enthalten sind. So speichern
sie eine VBA-Macro-Bibliothek:
Leider fragt Excel sehr früh, nämlich scon beim Befehl "Aufzeichnen"
(Start der Aufzeichnung) nach dem Speicherziel: Geben sie hier ein: "Persönliche
Makroarbeitsmappe". Falls sie ihr Macro schon anderswo gespeichert
haben, dann legen sie irgendein Macro hier an, damit die persönliche
Arbeitsmappe überhaupt erzeugt wird, löschen sie das unnötige
Macro, und kopieren sie dann ihr Macro dorthin.
Speichern
sie ihre persönliche Macro-Bibliothek so:
Wählen sie im VBA-Fenster (zugänglich aus Excel mit Alt-F11)
das "VBA Projekt (PERSONL.XLS) und erteilen sie den Befehl Datei
/ PERSONL.XLS speichern. Diese Datei wird (je nach Betriebssystem)
im Ordner C:\Dokumente und Einstellungen\Name\Anwendungsdaten\
Microsoft\XLStart\PERSONL.XLS gespeichert.
Diese Datei wird bei jedem Start von Excel geladen, die darin enthaltenen
Macros stehen ihnen daher auf jedem neuen Arbeitsblatt zur Verfügung.
Sie können diese Macro-Bibliothek zu jedem späteren Zeitpunkt
ändern und ergänzen.
Grafiken als Macro-Buttons:
Der Aufruf eines Macros (z.B. der eigenen Bibliothek) ist mit Befehl Extra / Macro / Macros / PERSONL.XLS!Standarddaten
doch etwas kompliziert. Eleganter ginge es z.B. mit einem Button zum Anklicken.
Dazu stehen mehrere Methoden zur Verfügung:
Lassen sie die Symbolleiste "Formular" anzeigen: Befehl Ansicht
/ Symbolleisten / Formular. In der Werkzeugleiste wählen sie das
Symbol "Schaltfläche" und ziehen sie mit der Maus in ihrem
Arbeitsblatt einen Button. Wählen sie aus dem automatisch erscheinenden
Fenster "Makro zuweisen" das gewünschte Macro, z.B. "Standarddaten".
Mit der rechten Maustaste lässt sich dieser Button verschieben, seine
Grösse und sein Text ändern. Bei Klick auf diesen Button wird
das Macro ausgeführt - rasch und einfach.
Sie können
jeden der zahllosen Freeware-Buttons aus dem Internet einsetzen:
Grafik zuerst speichern, dann in Excel importieren: Befehl Einfügen / Grafik / Aus Datei, dann Grafik
auswählen, Taste "Einfügen". So
können sie eingefügte Grafiken als Buttons nutzen: Grafik mit
der rechten Maustaste anklicken, Befehl "Makro zuweisen", aus
der Tabelle das gewünschte Macro auswählen, mit "OK"
quittieren. Bei Klick auf diesen Grafik-Button wird das Macro ausgeführt
- rasch, elegant und einfach.
Selbstverständlich können sie Grafik-Buttons - wie jede andere
Grafik - mit Grafik-Programmen ändern, z.B. beschriften, mit Icons
versehen, ...
Macros
in eigenen Menüs:
Eine besonders einfache und professionelle Methode, eigene Macros einzubauen,
sind eigene Menüs:
Sie ordnen ihre eigenen Macros in ihrem eigenen Menü an, oder fügen
einen eigenen Macro-Befehl in ein vorhandenes Menü ein.
Befehl Ansicht
/ Symbolleisten / Anpassen / Befehle / Kategorien / Neues Menü:.
Ziehen sie den Befehl "Neues Menü" aus der rechten Seite
des Fensters an jene Stelle des Menübalkens, wo das neue Menü
stehen soll.
Mit der rechten Maustaste können sie den Titel (hier: myMenü)
ändern. Befehl Ansicht
/ Symbolleisten / Anpassen / Befehle / Makros: Ziehen sie aus diesem
oder anderen Menüs Symbole aus der rechten Seite des Fensters an
die gewünschte Stelle des neuen Menüs.
Klick mit
der rechten Maustaste auf einen Menüpunkt zeigt dessen Eigenschaften.
Ändern sie "Makro zuweisen" nach Wunsch.
Nun haben
sie ein funktionierendes Macro erzeugt, und dessen Anwendung einfach und
professionell organisiert.