Wenn Sie sich aufgezeichnete Makros ansehen oder diese bearbeiten wollen, können Sie diese wesentlich schneller und einfacher finden, wenn Sie wissen, unter welchem Namen Word und Excel Makros ablegen. Die nächsten Abschnitte erläutern, nach welchen Kriterien Word und Excel Modulnamen für aufgezeichnete Makros vergeben.
Bei Word 97 werden alle aufgezeichneten Makros in einem Modul mit dem Namen NewMacros gespeichert. Wollen sie das neue Makro beispielsweise in der Vorlage Normal.dot ablegen, speichert Word den Quelltext des Makros im Modul NewMakros in der Vorlage NORMAL.DOT. Wenn Sie auf der anderen Seite in dem geöffneten Dokument CH02.DOC ein Makro aufzeichnen und es dort ablegen, speichert Word das aufgezeichnete Makro in dem Modul des Dokuments CH02.DOC NewMacros. Existiert das Modul NewMacros noch nicht, erstellt Word es zeitgleich mit der Speicherung der von Ihnen aufgezeichneten Aktionen.
Word speichert alle aufgezeichneten Makros in dem Modul NewMacros in dem geöffneten Dokument oder der ausgewählten Dokumentvorlage. Dabei spielt es keine Rolle, in welcher Sitzung Sie das Makro aufgezeichnet haben.
Wenn Excel 97 das Modul erstellt, in dem das aufgezeichnete Makro gespeichert werden soll, erhält dieses Modul den Namen MODULN. N entspricht dabei der Anzahl der Module in einer Arbeitsmappe, die innerhalb einer Sitzung neu erstellt wurden. Wenn Sie zum Beispiel zum ersten Mal ein aufgezeichnetes Makro in der persönlichen Makro-Arbeitsmappe namens PERSONAL.XLS speichern, erstellt Excel das Modul Modul1, um das aufgezeichnete Makro abzulegen. Zeichnen Sie in dieser Sitzung noch weitere Makros auf und speichern Sie diese in der persönlichen Makro-Arbeitsmappe, legt Excel auch diese in dem Modul ab. Erst wenn Sie eine andere Arbeitsmappe für die Speicherung wählen, erstellt Excel ein neues Modul. Entscheiden Sie sich später in Ihrer Arbeitssitzung wieder dafür, aufgezeichnete Makros in der Arbeitsmappe PERSONAL.XLS zu speichern, fügt Excel der Arbeitsmappe PERSONAL.XLS ein neues Modul mit dem Namen Modul2 hinzu.
Existiert der ausgewählte Modulname in der Arbeitsmappe bereits, erhöht Excel die Zahl im Modulnamen so lange um eins, bis der neue Name sich von dem bereits vergebenen Namen unterscheidet. Sie haben beispielsweise eine neue Excel-Arbeitssitzung gestartet und wollen ein neu erstelltes Makro in der persönlichen Makro-Arbeitsmappe speichern. Excel wählt jetzt zuerst Modul1 als Namen des neuen Moduls, da es das erste Modul ist, das während dieser Sitzung für die Arbeitsmappe PERSONAL.XLS erstellt wurde. Gibt es in der Arbeitsmappe PERSONAL.XLS bereits Module mit den Namen Modul1 und Modul2, erhöht Excel die Zahl im Modulnamen so lange um eins, bis es keine Konflikte mit bereits vorhandenen Modulnamen mehr gibt. Das neue Modul erhält also den Namen Modul3.
Excel wendet für die Wahl des Namens für ein Modul, das Sie manuell über den Befehl Modul aus dem Menü Einfügen des Visual-Basic-Editors eingeben, dieselben Regeln an, die auch verwendet werden, wenn Excel ein Modul zur Speicherung eines aufgezeichneten Makros erzeugt. Obwohl Word alle neu aufgezeichneten Makros in dem Modul NewMacros speichert, gelten für die Speicherung eines Word-Moduls, das Sie manuell mit Hilfe des Befehls Modul aus dem Menü Einfügen des Visual Basic-Editors eingeben, dieselben Benennungsregeln für Module wie bei Excel. Das Einfügen von Modulen wird weiter unten in dieser Lektion beschrieben.
Abbildung
2.1:
Ein typisches VB-Editor-Fenster, in diesem Fall von Word angezeigt. |
Bei Bedarf können Sie jedes VB-Editor-Unterfenster an einen anderen Ort auf dem Bildschirm verschieben, indem Sie die Kopfzeile des Fensters erfassen und diese mit der Maustaste in die gewünschte Position ziehen. Wenn Sie die Verankerung des Unterfensters durch Verschieben lösen, wird es zu einem verschiebbaren Fenster. (Verschiebbare Fenster sind stets im Vordergrund aller anderen Fenster sichtbar). Sie können auch die Größe der VB-Editor-Unterfenster verändern, indem Sie die Fensterränder mit der Maus auf die gewünschte Größe ziehen. Um die Größe eines VB-Editor-Fensters zu ändern, sind die gleichen Schritte wie bei jeder anderen Windows-Anwendung notwendig.
Die drei Unterfenster des VB-Editors (siehe Abbildung 2.1) und ihre Aufgaben werden in der folgenden Liste zusammengefaßt.
Das Auswählen der Objekte im Projekt-Explorer erfolgt durch Anklicken des gewünschten Objekts. Mit Hilfe der Ordneransicht (siehe Abbildung 2.1) können Sie Objekte des gleichen Typs, in diesem Beispiel Word-Objekte, Module und Hinweise, in einem Ordner zusammenfassen. In der Ansicht in Abbildung 2.2 werden alle Objekte eines bestimmten Projekts ohne jegliche Art der Gruppierung angezeigt. Durch Anklicken der Schaltfläche Ordner wechseln können Sie Ordneransicht an- oder ausschalten.
Zusätzlich zu der Schaltfläche Ordner wechseln verfügt das Fenster des Projekt-Explorer noch über zwei weitere Schaltflächen: Code anzeigen und Objekt anzeigen. Haben Sie ein Objekt, beispielsweise ein Dokument oder eine Arbeitsmappe, im Fenster des Projekt-Explorer ausgewählt, können Sie sich dieses durch Anklicken der Schaltfläche Objekt anzeigen anzeigen lassen. Mit Hilfe der Schaltfläche Code anzeigen können Sie sich den Inhalt eines ausgewählten Moduls im Code-Fenster anzeigen lassen.
Abbildung
2.2:
Der Projekt-Explorer mit ausgeschalteter Ordneransicht. |
Wenn Sie das Code-Fenster geöffnet haben, um den Quelltext Ihres Makros zu bearbeiten, ist es vielleicht vorteilhaft, den Projekt-Explorer und das Eigenschaften-Fenster zu schließen. Mit dieser Maßnahme wird das Code-Fenster vergrößert und das Arbeiten wird erleichtert, da ein größerer Ausschnitt Ihres Quelltextes auf dem Bildschirm sichtbar wird. Durch Anklicken der Schaltfläche Fenster schliessen oben rechts im Fenster können Sie jedes VB-Editor-Unterfenster Projekt-Explorer, Eigenschaften-Fenster und Code-Fenster schließen (siehe auch Abbildungen 2.2 und 2.3). Der Projekt-Explorer und das Eigenschaften-Fenster werden wieder angezeigt, wenn Sie die entsprechenden Schaltflächen auf der Symbolleiste anklicken oder wenn Sie im Menü Ansicht den Befehl Projekt-Explorer bzw. den Befehl Eigenschaften-Fenster wählen.
Die Standardansicht des VBA-Quelltextes ist die Vollständige Modulansicht, wie in Abbildung 2.3 dargestellt. Bei der Vollständigen Modulansicht wird der gesamte Makro-Quelltext gleichzeitig in einem Text-Fenster mit Bildlauf angezeigt. Die Trennung der einzelnen Makros erfolgt in der Vollständigen Modulansicht durch eine dicke graue Linie. Den Inhalt eines Moduls können Sie sich auch über die Prozeduransicht des VB-Editors ansehen. (Prozedur ist ein Synonym für Makro; weiter unten erhalten Sie nähere Informationen zu Prozeduren). Die Module, die Sie in der Vollständigen Modulansicht, Abbildung 2.3, und in der Prozeduransicht, Abbildung 2.4, sehen, sind identisch. Die Wahl der Ansicht erfolgt durch Anklicken der entsprechenden Schaltfläche unten links im Code-Fenster.
Abbildung
2.3:
Das Code-Fenster des VB-Editors im Modus Vollständige Modulansicht. |
Abbildung
2.4:
Darstellung des Moduls aus Abbildung 2.3 in Prozeduransicht. |
Befindet sich das Code-Fenster im Modus Prozeduransicht, wie in Abbildung 2.4 dargestellt, ist zur Zeit nur der Quelltext eines Makros auf dem Bildschirm sichtbar. Um sich ein anderes Makro anzusehen, wählen Sie dieses aus dem Listenfeld Prozedur aus. Diese Liste steht Ihnen auch in der Vollständigen Modulansicht zur Verfügung, damit Sie schnell von einem Makro zum nächsten gelangen können.
Verwenden Sie das Listenfeld Objekt, um die Objekte auszuwählen, deren Prozeduren angezeigt und bearbeitet werden sollen. Bei Standardmodulen, wie beispielsweise Modulen, in denen Ihre aufgezeichneten Makros gespeichert werden, können Sie im Listenfeld Objekt nur (Allgemein) anklicken. Im weiteren Verlauf dieses Buchs werden Sie mehr über die Einsatzmöglichkeiten dieser Liste erfahren.
Die Fenster des VB-Editors kennen Sie mittlerweile recht genau. Als nächster Schritt werden daher die Symbolleisten und Menüs des VB-Editors erläutert, in denen Sie die notwendigen Befehle für die Arbeit mit dem Projekt-Explorer, dem Eigenschaften-Fenster und dem Code-Fenster finden.
Unternehmen Sie nicht den Versuch, alle in diesem Kapitel vorgestellten Menübefehle und Schaltflächen auf den Symbolleisten auswendig zu lernen. Die meisten Befehle gehören zu Aktivitäten, die noch nicht erläutert wurden. Verstehen Sie die nachfolgende Beschreibung der Menübefehle und Schaltflächen als Überblick über die Möglichkeiten des VB-Editors. In jeder Lektion werden die relevanten Menübefehle und Schaltflächen detailliert erklärt. In diesem Kapitel können Sie jedoch nachschlagen, wenn Sie komplexere Aufgaben mit dem VB-Editor lösen und bearbeiten wollen.
Tabelle 2.1: Befehle im Menü Datei
An Tag 15, »Erstellen benutzerdefinierter Dialogfelder«, erfahren Sie, wie benutzerdefinierte Formulare für die Erstellung benutzerdefinierter Dialogfelder eingesetzt werden.
Tabelle 2.2: Befehle im Menü Bearbeiten
An Tag 7, »Objekte und Auflistungen«, und an Tag 18, »Steuerung der Host-Anwendung zu VBA«, erfahren Sie mehr über Eigenschaften und Methoden.
Tabelle 2.3: Befehle im Menü Ansicht
Tabelle 2.4: Die Befehle im Menü Einfügen
Befehl | Aktion |
Prozedur | Fügt dem aktuellen Modul eine neue Function- oder Property-Prozedur hinzu (Prozedur ist ein Synonym für Makro). |
UserForm | Fügt Ihrem Projekt ein neues Formular für die Erstellung von benutzerdefinierten Dialogfeldern hinzu. Benutzerdefinierte Dialogfelder werden an Tag 15 vorgestellt. |
Modul | Fügt Ihrem Projekt ein neues Modul hinzu. Der VB-Editor übernimmt die Benennung des Moduls nach den zuvor beschriebenen Gesichtspunkten. |
Klassenmodul | Fügt Ihrem Projekt ein neues Klassenmodul hinzu. Klassenmodule werden für die Erstellung von benutzerdefinierten Objekten in Projekten benutzt. |
Datei | Fügt eine Textdatei mit einem VBA-Quelltext in ein Modul ein. |
Tabelle 2.5: Befehle im Menü Format
Befehl | Aktion |
Ausrichten | Öffnet ein Untermenü, mit dessen Befehlen Sie ausgewählte Objekte auf einem Formular zu einander ausrichten können. Objekte können an der oberen und unterer Kante sowie der linken oder rechten Ecke als auch an der Mitte oder am Mittelpunkt eines zuvor definierten Objekts ausgerichtet werden. |
Grösse angleichen | Öffnet ein Untermenü, mit dessen Befehlen Sie ausgewählte Objekte auf die Größe eines zuvor definierten Objekts bringen können. |
Grösse anpassen | Verändert gleichzeitig die Breite und Höhe eines Objekts so, daß die Größe des Objekts seinem Inhalt angepaßt wird. |
Grösse an Raster | Verändert gleichzeitig die Breite und Höhe eines Objekts so, daß jede Ecke am jeweils nächstgelegenen Rasterpunkt ausgerichtet wird. (Beim Erstellen von Formularen überspannt der VB-Editor das zu erstellende Formular optisch mit einem Gitternetz, das Ihnen die Positionierung und die Festlegung der Größe erleichtern soll.) |
Horizontaler Abstand | Öffnet ein Untermenü, mit dem Sie den horizontalen Abstand zwischen ausgewählten Objekten festlegen können. Der horizontale Abstand zwischen Objekten kann angeglichen, verringert, vergrößert oder ganz entfernt werden. |
Vertikaler Abstand | Öffnet ein Untermenü, mit dem Sie den vertikalen Abstand zwischen ausgewählten Objekten festlegen können. Der vertikale Abstand zwischen Objekten kann angeglichen, verringert, vergrößert oder ganz entfernt werden. |
Im Formular zentrieren | Öffnet ein Untermenü, mit dem Sie ausgewählte Objekte horizontal oder vertikal auf dem Formular zentrieren können. |
Schaltflächen ausrichten | Öffnet ein Untermenü, mit dem Sie automatisch die Befehlsschaltflächen auf einem Formular anordnen können. Die Schaltflächen werden in gleichmäßigem Abstand in einer Reihe über dem unteren Rand oder dem rechten Rand angeordnet. |
Gruppieren | Faßt mehrere ausgewählte Objekte zu einer Gruppe zusammen, so daß für diese Objekte die Größen- oder Positionsänderung sowie das Ausschneiden oder Kopieren als Gruppe vorgenommen werden kann. Dabei ist es immer noch möglich, einzelne Objekte auszuwählen, um deren Eigenschaften zu verändern. |
Gruppierung aufheben | Macht den Befehl Gruppierung unwirksam, so daß Objekte, die zuvor nur als Einheit vorlagen, jetzt wieder einzeln zur Verfügung stehen. |
Reihenfolge | Öffnet ein Untermenü, mit dem Sie übereinanderliegende Objekte, die von oben nach unten (in der sogenannten Z-Reihenfolge) angeordnet wurden, eine andere Reihenfolge zuweisen können. Benutzen Sie den Befehl Reihenfolge, um zum Beispiel ein Textfeld über einem grafischen Objekt anzuordnen. |
Tabelle 2.6: Befehle im Menü Testen
Mit den Befehlen des Menüs Testen können Sie die Ausführung Ihres Makros genau überwachen, das Makro an zuvor festgelegten Punkten anhalten und starten sowie die Ausführung des Makros schrittweise nachvollziehen. Jeder Befehl im Menü Testen wird detailliert an Tag 14 beschrieben.
Tabelle 2.7: Befehle im Menü Ausführen
Tabelle 2.8: Befehle im Menü Extras
Befehl | Aktion |
Verweise | Zeigt das Dialogfeld Verweise, mit dem Sie Querverweise zu Objekt- oder Typbibliotheken sowie anderen Projekten einfügen können. Nachdem Sie den Verweis festgelegt haben, werden die Objekte, Methoden, Eigenschaften, Prozeduren und Funktionen im Dialogfeld des Objektkatalogs angezeigt. |
Weitere Steuerelemente | Zeigt das Dialogfeld Weitere Steuerelemente, mit dem Sie die Symbolleisten der Werkzeugsammlung anpassen können, so daß Sie Formularen auch Steuerelemente hinzufügen können, die nicht in VBA integriert sind. Mit diesem Dialogfeld können Sie den Symbolleisten der Werkzeugsammlung auch Schaltflächen hinzufügen, die es Ihnen erlauben, einem Formular einfügbare Objekte, wie Excel-Arbeitsmappen oder Word-Dokumente, hinzuzufügen. |
Makros | Zeigt das Dialogfeld Makros an, mit dem Sie Makros erstellen, bearbeiten, ausführen oder löschen können. |
Optionen | Zeigt das Dialogfeld Optionen an, mit dem Sie unterschiedliche Optionen, für den VB-Editor festlegen können. So können Sie in diesem Dialogfeld zum Beispiel die Anzahl der Leerschritte eines Tab-Stopps bei der Syntax-Überprüfung ihrer Anweisungen definieren. Die unterschiedlichen Einstellungsmöglichkeiten im Dialogfeld Optionen werden in diesem Buch dann detailliert vorgestellt, wenn sie für eine bestimmte Programmieraufgabe relevant sind. |
<Projekt>Eigenschaften | Zeigt das Dialogfeld Projekteigenschaften an, mit dem sie unterschiedliche Eigenschaften Ihres VBA-Projekts, wie Name, Beschreibung und die Hilfedatei, festlegen können. In dem Dialogfeld Projekteigenschaften können Sie auch ein Schlüsselwort eingeben und somit Ihr Projekt vor fremden Zugriff schützen. |
Die Befehle im Menü Hilfe sind ebenfalls identisch mit den Hilfe-Befehlen, die Sie bereits aus Word, Excel und anderen Windows-Anwendungen von Microsoft kennen. Im Menü Hilfe finden Sie den Office-Assistenten, der Sie bei kontextorientierten Fragen unterstützt. Außerdem können Sie sich die VBA-Online-Hilfedateien der Host-Anwendung ansehen, aus der der VB-Editor gestartet wurde. Wenn Sie ein Modem oder einen Internet-Anschluß haben und den Befehl Microsoft im Web im Menü Hilfe anklicken, rufen Sie eine Reihe von Webseiten auf, in denen Sie Informationen über Microsoft-Produkte und VBA erhalten.
Der letzte Befehl des Menüs Hilfe ist Microsoft Visual Basic Info. Mit diesem Befehl öffnen Sie ein Dialogfeld, das Informationen über das Copyright von Microsoft Visual Basic enthält. In diesem Menü finden Sie auch die Schaltfläche Systeminfo, die Ihnen Informationen über Ihren Computer anzeigt, zum Beispiel welche Grafik- und Soundkarte oder welcher Druckertreiber installiert wurde. Ferner finden Sie technische Informationen wie Informationen darüber, welche Programme sich im Arbeitsspeicher befinden und welche Programme in der Windows-Systemregistrierung registriert wurden. An Tag 19, »Zusammenarbeit mit anderen Anwendungen: OLE- und Automatisierung«, wird Ihnen gezeigt, wie Sie das Dialogfeld Microsoft Visual Basic Info einsetzen müssen, um Informationen über OLE und Automatisierungsobjekte zu finden.
Normalerweise wird beim VB-Editor nur die Standardsymbolleiste angezeigt, wie in Abbildung 2.5 dargestellt. Zusätzlich zur Standardsymbolleiste verfügt der VB-Editor noch über drei weitere Symbolleisten: Bearbeiten, Testen und UserForm. Der Gebrauch der Symbolleiste Testen wird an Tag 14 und der der Symbolleiste UserForm an Tag 15 vorgestellt.
Die Symbolleiste Bearbeiten des VB-Editors enthält mehrere Befehle, die Sie bei der Bearbeitung des Textes im Code-Fenster benötigen. Die Symbolleiste Bearbeiten enthält darüber hinaus sogar einige Befehle, die Sie nicht auf der Standardsymbolleiste finden. Die Symbolleiste Bearbeiten und die Standardsymbolleiste werden weiter unten in diesem Abschnitt beschrieben.
Wie bei Word und Excel legen Sie die Anzeige der Symbolleiste fest, indem Sie im Menü Ansicht den Befehl Symbolleisten wählen. Da der VB-Editor die Symbolleiste Bearbeiten nicht standardmäßig einblendet, müssen Sie die Anzeige dieser Symbolleiste in einem Extraschritt aktivieren. Haben Sie oder ein anderer Benutzer die Standardsymbolleiste ausgeblendet, müssen Sie auch die Anzeige dieser Symbolleiste mit dem Befehl Symbolleisten aus dem Menü Ansicht neu aktivieren. Um die Symbolleisten des VB-Editors ein- oder auszublenden, gehen Sie wie folgt vor:
1. Klicken Sie auf Ansicht und wählen Sie den Befehl Symbolleisten. Ein Untermenü wird geöffnet, in dem alle Symbolleisten des VB-Editors aufgelistet werden.
2. Klicken Sie mit der Maus auf die Symbolleiste, die angezeigt werden soll. Um die Symbolleiste Bearbeiten anzuzeigen, müssen Sie in der Liste auf Bearbeiten klicken. Der VB-Editor zeigt dann die ausgewählte Symbolleiste an.
Wenn Sie mit dem Mauszeiger auf eine eingeblendete Symbolleiste gehen und dann die rechte Maustaste drücken, öffnet sich ebenfalls das Untermenü mit den zur Verfügung stehenden Symbolleisten. Dieses Pop-up-Menü können Sie also auch verwenden, wenn Sie Symbolleisten einblenden wollen.
Normalerweise zeigt der VB-Editor die Standardsymbolleiste in der verankerten Positionen, das heißt am oberen Fensterrand des VB-Editors. In Abbildung 2.1 sehen Sie eine Bildschirmdarstellung mit der Standardsymbolleiste in ihrer verankerten Position. Die Symbolleisten können sich auch in einem verschiebbaren Fenster befinden. Dann spricht man von unverankerten Symbolleisten. Wurde die Verankerung von Symbolleisten gelöst, erscheinen sie in Fenstern mit Rändern und Titelleisten. In Abbildung 2.6 sehen Sie die Symbolleiste Bearbeiten, deren Verankerung gelöst wurde. Das Verankern und Lösen erfolgt im VB-Editor nach dem gleichen Prinzip wie bei Word und Excel: Erfassen Sie mit dem Mauszeiger den Leistenrand. Ziehen Sie die Symbolleiste an die gewünschte Position. Halten Sie dabei die linke Maustaste gedrückt. (Nutzen Sie die Online-Hilfe des VB-Editors, um mehr Informationen zum Anzeigen, Verschieben, Verankern und Lösen von Symbolleisten zu bekommen).
In den nächsten Absätzen werden zunächst die Befehle der Standardsymbolleiste und dann die Befehle auf der Symbolleiste Bearbeiten vorgestellt.
Abbildung
2.5:
Die Standardsymbolleiste des VB-Editors enthält Schaltflächen für die wichtigsten und am häufigsten benutzten Befehle. |
Alle Symbolleisten des VB-Editors können angepaßt werden. Die Anpassung der Symbolleisten erfolgt bei VBA genauso wie bei Word 97 und Excel 97. Die Tabellen 2.9 und 2.10 in Kombination mit den Abbildungen 2.5 und 2.6 stellen die Standardeinstellung der Standardsymbolleiste und der Symbolleiste Bearbeiten des VB-Editors dar. Wurden diese Symbolleisten von Ihnen oder einem anderen Benutzer verändert, werden sich auf Ihrer Symbolleiste Schaltflächen befinden, die hier nicht beschrieben werden. Weitere Informationen finden Sie auch in der Online-Hilfe des VB-Editors.
Tabelle 2.9: Die Befehle der Standardsymbolleiste
Schaltfläche | Aktion |
Ansicht <Host-Anwendung> | Bringt Sie in die VBA-Host-Anwendung zurück, aus der Sie den VB-Editor gestartet haben. Das Aussehen dieser Schaltfläche hängt von der Host-Anwendung ab, aus der Sie die Arbeit mit dem VB-Editor aufgenommen haben. In Abbildung 2.5 wurde der VB-Editor aus Word gestartet. |
Objekt einfügen | Durch Anklicken des nach unten zeigenden Pfeils in der rechten Schaltflächenhälfte wird eine Liste mit Objekten geöffnet, die Sie in Ihr Projekt einfügen können: UserForm, Modul, Klassenmodul oder Prozedur. Die gleichen Befehle finden Sie auch im Menü Einfügen. |
Speichern | Speichert alle geöffneten Projekte. Speichern können Sie auch durch Anklicken des Befehls Speichern im Menü Datei. |
Ausschneiden | Schneidet markierte Textteile oder Objekte aus und speichert diese in der Zwischenablage. Ausschneiden können Sie ebenfalls mit dem Befehl Ausschneiden im Menü Bearbeiten. |
Kopieren | Kopiert markierte Textteile oder Objekte in die Zwischenablage. Durch Anklicken von Kopieren im Menü Bearbeiten erreichen Sie das gleiche Ziel. |
Einfügen | Fügt Texte oder Objekte aus der Zwischenablage in das Code-Fenster oder das Benutzerformular ein, wobei die Position des Cursors der Einfügestelle entspricht. Einfügen können Sie auch durch Anklicken von Einfügen im Menü Bearbeiten. |
Suchen | Öffnet das Dialogfeld Suchen, damit ein bestimmtes Wort oder ein Ausdruck in einem Modul gesucht werden kann. Die Suchfunktion können Sie auch über Suchen im Menü Bearbeiten aktivieren. |
Rückgängig | Macht den letzten Befehl rückgängig, wenn möglich. Nicht alle Befehle können rückgängig gemacht werden. Das gleiche Ergebnis erzielen Sie durch Anklicken von Rückgängig im Menü Bearbeiten. |
Wiederholen | Wiederholt
den zuvor rückgängig gemachten Befehl. Dies können
Sie auch durch Anklicken von Wiederholen im Menü Bearbeiten erreichen. |
Makro ausführen | Führt die aktuelle Prozedur oder das Formular aus. Durch Anklicken des Befehls Sub-/UserForm ausführen bzw Makro ausführen im Menü Ausführen aktivieren Sie den gleichen Befehl. |
Unterbrechen | Unterbricht die Ausführung Ihres VBA-Quelltextes, genauso wie der Befehl Unterbrechen des Menüs Ausführen |
Beenden | Bringt Ihren VBA-Quelltext wieder in die Ausgangsposition, genauso wie der Befehl Beenden im Menü Ausführen. |
Entwurfsmodus | Öffnet den Entwurfsmodus in Ihrem VB-Editor, genauso wie der Befehl Entwurfsmodus im Menü Ausführen. |
Projekt-Explorer | Öffnet das Fenster des Projekt-Explorer, genauso wie der Befehl Projekt-Explorer im Menü Ansicht. |
Eigenschaften-Fenster | Öffnet das Eigenschaften-Fenster, genauso wie der Befehl Eigenschaften-Fenster im Menü Ansicht. |
Objektkatalog | Öffnet das Dialogfeld Objektkatalog, genauso wie der Befehl Objektkatalog im Menü Ansicht. |
Werkzeugsammlung | Blendet die Symbolleiste Werkzeugsammlung ein, genauso wie der Befehl Werkzeugsammlung im Menü Ansicht. |
Office-Assistent | Blendet den Office Assistenten ein, der eingreifen kann, wenn während der Arbeit Probleme auftreten. Direkthilfe erhalten Sie auch, wenn Sie den Befehl Microsoft-Visual-Basic-Hilfe in dem Menü Hilfe anklicken. |
Cursorposition | Hier handelt es sich nicht um eine Schaltfläche im eigentlichen Sinne. Diese Anzeige erscheint nur, wenn der Cursor sich im Code-Fenster befindet. Sie können ihr entnehmen, in welcher Zeile und welcher Spalte des Moduls sich die Einfügemarke befindet. In Abbildung 2.5 befindet sich die Einfügemarke in Zeile 1 der Spalte 5. |
Wie schon bei den Menübefehlen sollten Sie sich hier nicht verunsichern lassen, wenn Sie die Bedeutung der einzelnen Schaltflächen auf der Symbolleiste des VB-Editors jetzt noch nicht vollständig verstehen. Die detaillierte Beschreibung der Schaltflächen erfolgt später, wenn Sie für bestimmte Aufgaben relevant sind. Die Funktion dieses Abschnitts besteht ausschließlich darin, die Schaltflächen auf den Symbolleisten des VB-Editors vorzustellen.
Abbildung
2.6:
Die Symbolleiste Bearbeiten bietet Ihnen verschiedene Shortcuts für die am häufigsten bei der Bearbeitung benutzten Befehle. |
Sie können die Symbolleiste Bearbeiten genauso wie jede andere Symbolleiste verankern, indem Sie sie an den oberen oder unteren Rand sowie in die rechte oder linke Ecke des VB-Editor-Fensters ziehen.
Tabelle 2.10: Die Befehle der Symbolleiste Bearbeiten
Schaltfläche | Aktion |
Eigenschaften/Methoden anzeigen | Öffnet eine Drop-down-Liste mit den Eigenschaften und Methoden, die zu einem gerade eingegebenen Objekt gehören. Diese Liste können Sie auch mit dem Befehl Eigenschaften/Methoden anzeigen aus dem Menü Bearbeiten öffnen. |
Konstanten anzeigen | Öffnet eine Drop-down-Liste mit bereits definierten Konstanten, genauso wie der Befehl Konstanten anzeigen aus dem Menü Bearbeiten. |
Quickinfo | Öffnet ein Fenster, das die richtige Syntax für eine Objektmethode anzeigt, genauso wie der Befehl Quickinfo im Menü Bearbeiten. |
Parameterinfo | Öffnet ein Fenster, das die Parameter (auch Argumente genannt) anzeigt. Parameterinfo aus dem Menü Bearbeiten öffnet ebenfalls dieses Fenster. |
Wort vervollständigen | Vervollständigt das VBA-Schlüsselwort. Sobald genügend Buchstaben eingegeben wurden, ist VBA in der Lage, das Wort zu identifizieren und zu vervollständigen. Dieser Befehl kann auch durch das Anklicken von Wort vervollständigen aus dem Menü Bearbeiten aktiviert werden. |
Einzug vergrössern | Rückt einen oder mehrere Absätze um eine Ebene ein, genauso wie Einzug vergrössern aus dem Menü Bearbeiten. |
Einzug verkleinern | Entfernt eine Einzugsebene für einen oder mehrere Absätze, genauso wie Einzug verkleinern aus dem Menü Bearbeiten. |
Haltepunkt ein/aus | Fügt einen Haltepunkt in Ihren VBA-Quelltext ein oder entfernt diesen, genauso wie Haltepunkt ein/aus aus dem Menü Testen. |
Block auskommentieren | Durch Einfügen eines Kommentarzeichens vor jeder ausgewählten Zeile wird ein Textabschnitt im Code-Fenster zu einem Kommentar. Für diese Schaltfläche gibt es keine äquivalenten Menübefehle. Kommentare und Kommentarzeichen werden weiter unten vorgestellt. |
Auskommentierung des Blocks aufheben | Entfernt die Kommentarzeichen aus einem markierten Textteil im Code-Fenster. Für diese Schaltfläche gibt es keine äquivalenten Menübefehle. |
Lesezeichen setzen/zurücksetzen | Fügt ein Lesezeichen in Ihren VBA-Quelltext ein oder entfernt es. Lesezeichen setzen oder zurücksetzen können Sie ebenfalls durch Anklicken von Lesezeichen setzen/zurücksetzen im Untermenü Lesezeichen, das Sie im Menü Bearbeiten finden. |
Nächstes Lesezeichen | Dieser Befehl verschiebt die Einfügemarke auf das nächste Lesezeichen im Code-Fenster, genauso wie Nächstes Lesezeichen unter Lesezeichen im Menü Bearbeiten. |
Vorheriges Lesezeichen | Dieser Befehl verschiebt die Einfügemarke auf das vorherige Lesezeichen im Code-Fenster, genauso wie Vorheriges Lesezeichen unter Lesezeichen im Menü Bearbeiten. |
Alle Lesezeichen löschen | Löscht alle Lesezeichen in einem Modul, genauso wie Alle Lesezeichen Löschen unter Lesezeichen im Menü Bearbeiten. |
Es gibt VBA-Host-Anwendungen, wie zum Beispiel Access 97, die nicht über den hier vorgestellten VB-Editor verfügen. Access 97 verfügt zum Beispiel über eine Arbeitsumgebung für VBA, die jedoch ähnliche Merkmale aufweist wie der VB-Editor. In VBA-Host-Anwendungen, die nicht mit dem VB-Editor arbeiten, finden Sie normalerweise eine VBA-Symbolleisten und ähnliche Menüs wie die in diesem Kapitel beschriebenen, wobei sich jedoch einige Schaltflächen und Befehle unterscheiden. Allgemein gilt jedoch: Die Arbeitsumgebung für die VBA-Programmierung in anderen Anwendungen als Word 97 oder Excel 97 sind dem hier vorgestellten VB-Editor sehr ähnlich und das ist bei Verwendung von VBA in erster Linie das wichtigste.
Im nächsten Kapitel lernen Sie ein VBA-Modul anzuzeigen sowie unterschiedliche Methoden, um spezielle Makros zu finden. Im Anschluß daran werden die verschiedenen Elemente eines aufgezeichneten Makros vorgestellt und danach wird beschrieben, wie das Makro bearbeitet werden kann.
1. Drücken Sie (Alt)+(F11), um den VB-Editor zu aktivieren, falls dieses noch nicht geschehen ist.
2. Klicken Sie auf Projekt-Explorer im Menü Ansicht, um das Projekt-Explorer-Fenster zu öffnen, wenn es noch nicht geöffnet wurde.
3. Navigieren Sie durch die Baumstruktur des Projekt-Explorer, um das gewünschte Modul zu finden. Befindet sich der Projekt-Explorer im Modus Ordneransicht, werden alle Module eines Projekts im Ordner Module angezeigt. (In Abbildungen 2.1 und 2.7 sehen Sie die Baumstruktur des Projekt-Explorer).
4. Doppelklicken Sie auf das Modul, das Sie anzeigen wollen. Der VB-Editor zeigt das Modul im Code-Fenster an.
Nachdem Sie das Modul geöffnet haben, können Sie mit Hilfe des Listenfelds Prozedur des Code-Fensters ein spezielles Makro dieses Moduls aktivieren. Sie können ein Makro auch anzeigen, ohne zuvor das Modul zu öffnen. Gehen Sie dabei nach der im folgenden Abschnitt beschriebenen Technik vor.
Da Word immer das Modul NewMacros aus der Dokumentdatei oder der Dokumentvorlage auswählt, um neue Makros abzulegen, ist es recht einfach, einen Makro-Quelltext in Word zu finden. Einen Makro-Quelltext in Excel zu finden, ist jedoch eine etwas komplexere Aufgabe. Aufgrund der Art und Weise, wie Excel 97 neue Module in eine Arbeitsmappe einfügt und benennt, ist es möglich, daß Sie in einer Arbeitsmappe viele unterschiedliche Module mit nahezu identischen Namen finden. Das kann dazu führen, daß Sie nicht wissen, welches Modul Sie öffnen müssen, um ein bestimmtes Makro zu finden. Zum Beispiel haben Sie das Makro FormatArialBold12, das Sie an Tag 1 in Excel erstellt haben, in der Arbeitsmappe PERSONAL.XLS gespeichert. Ist dieses das erste Makro gewesen, das Sie aufgezeichnet und in der Arbeitsmappe PERSONAL.XLS abgelegt haben, hat Excel das Makro FormatArialBold12 in einem Modul mit dem Namen Module1 gespeichert. Wenn Sie jetzt in der gleichen Arbeitssitzung das Makro NewWorkbook aus Übung 1.4 aufgezeichnet haben, hat Excel dieses ebenfalls in dem Modul Modul1 gespeichert. Haben Sie Excel jedoch nach dem Aufzeichnen des Makros FormatArialBold12 verlassen und das Makro NewWorkbook in einer neuen Sitzung erstellt, wird Excel NewWorkbook in einem neuen Modul, höchstwahrscheinlich mit Namen Modul2, gespeichert. Dieses Beispiel macht deutlich, daß Sie nicht sofort erkennen können, in welchem Modul der Arbeitsmappe PERSONAL.XLS sich das Makro NewWorkbook befindet. Wenn Sie den Quelltext dieses Makros bearbeiten wollen, müssen Sie eigentlich alle Module der Arbeitsmappe öffnen, um das gewünschte Makro zu finden.
Um Makros mit Hilfe des Objektkatalogs zu suchen und anzuzeigen, gehen Sie wie folgt vor:
Das hier beschriebene Verfahren zeigt Ihnen sowohl, wie Sie generell Makro-Quelltexte in Word und Excel suchen und anzeigen können, als auch, wie Sie die Suche für das Beispielmakro FormatArialBold12, das Sie an Tag 1 in Excel erstellt haben, durchführen. Wollen Sie dieses Beispiel selbst am Computer nachvollziehen, starten Sie Excel und beginnen Sie dann mit Schritt 1.
1. Drücken Sie (Alt)+(F11), um den VB-Editor zu starten, falls dieses noch nicht geschehen ist.
2. Wählen Sie Projekt-Explorer aus dem Menü Ansicht, um das Fenster des Projekt-Explorer zu öffnen, falls es noch nicht geöffnet wurde (siehe Abbildung 2.7).
Abbildung
2.7:
Wählen Sie im Projekt-Explorer ein Projekt aus, bevor Sie im Objektkatalog ein Makro suchen. |
3. Wählen Sie im Projekt-Explorer ein VBA-Projekt, in dem Sie nach dem Makro suchen wollen. Abbildung 2.7 zeigt zum Beispiel, daß die Arbeitsmappe PERSONAL.XLS im Projekt-Explorer ausgewählt wurde.
Sie müssen das VBA-Projekt, in dem Sie das Makro suchen wollen, aus dem Projekt-Explorer auswählen, bevor Sie den Suchvorgang mit dem Objektkatalog starten können. Die Makros Ihres Projekts werden nur im Objektkatalog angezeigt, wenn das Projekt im Projekt-Explorer markiert wurde.
4. Wählen Sie Objektkatalog aus dem Menü Ansicht. Der VB-Editor öffnet das Dialogfeld Objektkatalog, das in Abbildung 2.8 dargestellt ist.
Sie können den Objektkatalog auch starten, indem Sie die Schaltfläche Objektkatalog auf der Symbolleiste des VB-Editors anklicken.
5. Vergewissern Sie sich, daß im Textfeld der Drop-down-Liste Projekt/Bibliothek <Alle Bibliotheken> steht (siehe Abbildung 2.8) Der Objektkatalog zeigt alle zur Verfügung stehenden Module und Objekte in der Liste Klassen an.
6. Schreiben Sie den Namen des gesuchten Makros in das Feld Suchtext. Um zum Beispiel den Quelltext des Beispielmakros FormatArialBold12 zu suchen, schreiben Sie FormatArialBold12 in das Feld Suchentext.
Abbildung
2.8:
Benutzen Sie das Dialogfeld des Objektkatalogs, um nach Makros und den Modulen zu suchen, in denen sie gespeichert sind. |
7. Klicken Sie auf die Schaltfläche Suchen im Objektkatalog (siehe Abb. 2.8). Der Objektkatalog durchsucht sowohl Ihr VBA-Projekt als auch andere geöffnete Objekt-Bibliotheken nach dem Suchbegriff, den Sie in das Feld Suchentext eingegeben haben.
Nach dem Suchvorgang ändert sich auf dem Bildschirm das Fenster des Objektkatalogs. Dieser zeigt jetzt eine Liste mit den Suchergebnissen an, wie in Abbildung 2.9 dargestellt. Wenn der Objektkatalog Makros findet, deren Namen mit dem Suchtext übereinstimmen, werden diese in der Liste Suchergebnisse angezeigt. Findet er keine identischen Benennungen, steht in dieser Liste die Meldung: Keine Elemente gefunden.
8. Markieren Sie das Makro in der Liste Suchergebnisse und klikken Sie dann im Objektkatalog auf die Schaltfläche Definition anzeigen (siehe Abb. 2.8). Der Objektkatalog öffnet jetzt das Code-Fenster mit dem Modul, in dem sich das gewünschten Makro befindet, und zeigt den Quelltext dieses Makros an.
Abbildung
2.9:
Der Objektkatalog nach Beendigung der Suche nach dem Makro FormatArialBold12 im VBA-Projekt Personal.xls. |
Wenn Sie die Schaltfläche Definition anzeigen anklicken, öffnet der VB-Editor das Code-Fenster und zeigt das Modul mit dem gesuchten Makro an, wobei die Einfügemarke an den Anfang des Makro-Quelltextes springt.
1. Drücken Sie (Alt)+(F11), um den VB-Editor zu öffnen.
2. Wählen Sie Projekt-Explorer aus dem Menü Ansicht, um das Fenster des Projekt-Explorer zu öffnen, falls dies noch nicht geschehen ist.
3. Klicken Sie im Fenster des Projekt-Explorer auf das VBA-Projekt, in dem Sie das Makro vermuten.
4. Klicken Sie im Menü Ansicht auf Objektkatalog. Der VB-Editor öffnet das Dialogfeld Objektkatalog.
5. Wählen Sie aus der Drop-down-Liste Projekt/Bibliothek im Objektkatalog den Namen Ihres Projekts. Wenn Sie keine Veränderungen vorgenommen haben, hat Ihr Projekt in Excel den Namen VBAProject und in Word Project. Wie Sie den Projektnamen verändern können, wird Ihnen in einem späteren Kapitel gezeigt.
In Word 97 ist Normal der Standardname für ein VBA-Projekt, das in der Vorlage NORMAL.DOT gespeichert wurde.
6. Wählen Sie ein Modul aus der Liste Klassen. Der Objektkatalog zeigt nun alle Makros des ausgewählten Moduls in der Liste Elemente von <Objekt>. (Die exakte Benennung dieser Liste ändert sich entsprechend des Objekts, das in der Liste Klassen ausgewählt wurde).
7. Markieren Sie in der Liste Elemente von <Objekt> das Makro, dessen Quelltext angezeigt werden soll.
8. Klicken Sie im Objektkatalog auf die Schaltfläche Definition anzeigen. Der VB-Editor öffnet das Code-Fenster mit dem Modul, in dem sich das Makro befindet, und zeigt den Quelltext an.
Haben Sie nur ein einziges Projekt in der Drop-down-Liste Projekt/Bibliothek markiert, werden in der Liste Klassen nur die Objekte angezeigt, die Teil Ihres Projekts sind. Diese setzen sich dann gewöhnlich aus einem oder mehreren Modulen, dem Word-Dokument oder der Excel-Arbeitsmappe zusammen, die dann wiederum aus einem oder mehreren Tabellenblättern bestehen kann.
In Abbildung 2.10 sehen Sie zum Beispiel das Fenster des Objektkatalogs mit der Liste Projekt/Bibliothek, aus der für die Vorlage PERSONAL.XLS das VBA-Projekt ausgewählt wurde. In Abbildung 2.10 können Sie außerdem sehen, daß in der Liste Klassen ThisWorkbook (ein Hinweis auf PERSONAL.XLS) zwei Module und ein Tabellenblatt angezeigt werden.
Abbildung
2.10:
Sie können den Objektkatalog auch benutzen, um sich den Inhalt der verschiedenen Objekte in Ihrem Projekt anzusehen. |
Nachdem mit einer der zuvor beschriebenen Methoden ein Makro in das Code-Fenster geladen wurde, können Sie sich den Quelltext ansehen oder ihn bearbeiten. In Abbildung 2.11 sehen Sie im Code-Fenster den Quelltext des Beispielmakros NewWorkbook, das Sie an Tag 1 in Übung 1.4 erstellt haben. In Abbildung 2.11 wurden der Projekt-Explorer und das Eigenschaften-Fenster geschlossen, so daß das Code-Fenster seine maximale Größe einnehmen kann.
Abbildung
2.11:
Sie können den Objektkatalog auch benutzen, um sich den Inhalt der verschiedenen Objekte in Ihrem Projekt anzusehen. |
Wenn Sie das Makro, das Sie bearbeiten wollen, geöffnet haben, können Sie mit Hilfe der horizontalen und vertikalen Bildlaufleisten die Position des Makros festlegen. Das Suchen nach einem Makronamen durch Auswahl des Befehls Suchen im Menü Bearbeiten ist identisch mit der Textsuche in einem Excel-Tabellenblatt oder einem Word-Dokument. (Verwenden Sie die Online-Hilfe des VB-Editors, wenn Sie nähere Informationen zu diesem Befehl wünschen).
Denken Sie daran, daß Sie im Fenster des Projekt-Explorer durch Doppelklicken jedes Modul öffnen können.
Denken Sie daran, daß Sie Makros im Code-Fenster auch suchen können, indem Sie in der Liste Prozedur das Makro, das Sie anzeigen oder bearbeiten wollen, auswählen.
Vergessen Sie nicht, daß im Projekt-Explorer nur Projekte aus geöffneten Dokumenten oder Arbeitsmappen aufgelistet werden. Finden Sie die gewünschte Projektdatei (.DOC, .DOT, .XLS, or .XLA) nicht im Projekt-Explorer, kehren Sie zurück in die Host-Anwendung, aus der Sie den VB-Editor gestartet haben, und öffnen Sie die benötigte Datei.
Vergessen Sie nicht, daß der Objektkatalog nur Objekte anzeigt, die sich in dem Projekt befinden, das Sie im Projekt-Explorer ausgewählt haben oder auf das verwiesen wird.
Auf Ihrem Bildschirm wird der Makro-Quelltext im Modul ohne Numerierung angezeigt. In diesem Buch werden jedoch die einzelnen Zeilen der Listings durchnumeriert, damit Sie diese schneller wiederfinden, wenn auf eine bestimmte Zeile Bezug genommen wird.
Listing 2.1: Das Excel-Makro FormatArialBold12.
1: Sub FormatArialBold12() 2: ' 3: 'FormatArialBold12 Macro 4: 'Macro recorded 12/5/96 by Matthew Harris. 5: Formatiert Zelleninhalt mit Arial, 12 Punkt, Fett. 6: ' 7: ' 8: With Selection.Font 9: .Name = "Arial" 10: Size = 12 11: .Bold = True 12: .Strikethrough = False 13: .Superscript = False 14: .Subscript = False 15: .OutlineFont = False 16: .Shadow = False 17: .Underline = xlUnderlineStyleNone 18: .ColorIndex = xlAutomatic 19: End With 20: End SubListing 2.2: Das Makro EmphasizeWord
1: Sub Emphasize Word () 2: ' 3: EmphasizeWord Macro 4: Macro recorded 12/4/96 by Matthew Harris. 5: Weist ausgewähltem Textelement die Schrift 12 PunktFett, Arial zu 6: ' 7: Selection.Font.Name = "Arial" 8: Selection.Font.Size = 12 9: Selection.Font.Bold = wdToggle 10: End Sub
Sowohl in Listing 2.1 als auch in Listing 2.2 beginnt das aufgezeichnete Makro mit Zeile 1. Jedes VBA-Makro beginnt mit dem Schlüsselwort Sub, gefolgt von dem Makronamen. Die Zeile mit dem Schlüsselwort Sub und dem Makronamen wird als Deklarationszeile des Makros bezeichnet, da VBA das Makro mit Hilfe dieser Zeile als Makro identifiziert. Dem Makronamen folgen immer zwei leere Klammern. Der Zweck und Gebrauch dieser Klammern wird an den Tagen 6 und 11 erklärt. Im Moment ist es vollkommen ausreichend, wenn Sie wissen, daß diese Klammern immer direkt auf den Namen des aufgezeichneten Makros folgen.
Ein Schlüsselwort ist ein Wort, das ein Element der Programmiersprache VBA ist. Im Gegensatz dazu gibt es Wörter wie den Makronamen, die der Benutzer festlegt. VBA-Schlüsselwörter werden, wenn sie im Fließtext auftreten, in der Schriftart Monospace im Fettdruck dargestellt. Im Listing werden sie nicht gesondert hervorgehoben.
Die Zeilen 2 bis 7 in Listing 2.1 und die Zeilen 2 bis 6 in Listing 2.2 sind Kommentare. Ein Kommentar ist eine Zeile im VBA-Makro, die keine Befehle enthält, sondern die Aufgabe hat, Informationen über das Makro im Quelltext anzuzeigen. Beachten Sie, daß jede Kommentarzeile mit einem Apostroph (') beginnt. Jeder Text, der einem Apostroph folgt, wird von VBA bis zum Zeilenende als Kommentar interpretiert.
Der Quelltext eines Makros beginnt immer mit den Kommentarzeilen, die den Namen und die Beschreibung enthalten, die Sie in das Textfeld Beschreibung des Dialogfelds Makro aufzeichnen vor dem Starten des Makrorecorders eingegeben haben. Die Anzahl und der Inhalt der Kommentarzeilen eines aufgezeichneten Makros hängen vom Umfang Ihrer Beschreibung ab.
Direkt nach der Deklaration des Makros folgt der Rumpf des Makros (in dem Kommentarzeilen enthalten sein können oder auch nicht). Bei Listing 2.1 bilden die Zeilen 2 19 den Rumpf des Makros FormatArialBold12; und bei Listing 2.2 erstreckt sich der Rumpf des Makros EmphasizeWord von Zeile 2 bis Zeile 9. Jede Zeile des Makrorumpfes besteht aus einer oder mehreren VBA-Anweisungen. Eine VBA-Anweisung ist eine Reihe von Schlüsselwörtern und anderen Symbolen, die zusammen einen einzigen vollständigen Befehl in VBA ergeben. Dieses ist vergleichbar mit einem einzigen Satz in einer bestimmten Sprache. Da nun ein Absatz sich aus mehreren einzelnen Sätzen zusammensetzt, besteht auch ein VBA-Makro aus einer Reihe von einzelnen Anweisungen.
Die VBA-Anweisungen in einem aufgezeichneten Makro enthalten Befehle, die die Funktion haben, die gleichen Aktionen auszuführen, die Sie während der Aufzeichnung vorgenommen haben. Zum Beispiel werden in Zeile 9 des Listing 2.1 die Schriftart Arial und in Zeile 10 des gleichen Listing der Schriftgrad festlegt. In Listing 2.2 werden in Zeile 7 die Schriftart und in Zeile 8 der Schriftgrad definiert. Zeile 9 enthält den Befehl für die Umschaltung zum Fettdruck. Jede dieser Anweisungen ist mit den Aktionen identisch, die Sie während der Aufzeichnung des Makros vorgenommen haben.
Nach dem Rumpf folgt die Zeile mit den Schlüsselwörtern End Sub, die VBA mitteilen, daß das Ende des Makros erreicht wurde. Das Makro aus Listing 2.1 endet mit Zeile 20 und das Makro aus Listing 2.2 mit Zeile 10.
Wenn Sie ein Makro ausführen, startet VBA mit der ersten Zeile des Makrorumpfs, also der ersten Zeile nach der Deklaration, und führt die Befehle dieser Zeile nacheinander von links nach rechts aus. VBA geht dann zur nächsten Zeile über und führt deren Befehle aus. Die Anweisung End Sub signalisiert VBA, daß das Ende des Makros erreicht wurde. Bei der Ausführung ignoriert VBA Kommentarzeilen, die ebenfalls Bestandteil des Rumpfs sein können.
Wie Sie sehen können, werden die Zeilen der beiden aufgezeichneten Makros unterschiedlich weit vom linken Rand eingerückt. Durch die Weite des Einzugs wird sichtbar, welche Zeilen des Makros eine Einheit bilden. Der gesamte Rumpf des Makros befindet sich als Einrückung zwischen den Schlüsselwörtern Sub...End Sub. Dadurch hebt sich der Makrorumpf ab und Sie können ihn schnell und einfach erkennen. Manche Zeilen des Rumpfs, wie die Zeilen 9 bis 18 des Listing 2.1, sind sogar noch um eine weitere Ebene eingerückt. Diese zweite Einzugebene soll die Anweisungen zwischen den Schlüsselwörtern With...End With hervorheben. (Die Bedeutung der Anweisungen wird an den Tagen 7 und 11 erklärt):
Der Makrorecorder nimmt das Einrücken des Quelltextes bei der Erstellung des Makros automatisch vor und trägt somit zur übersichtlichen Gestaltung des Quelltextes bei. Wenn Sie Ihre Makros selber schreiben, sollten Sie den Quelltext ebenfalls einrücken, um die einzelnen Abschnitte des Textes voneinander zu trennen. Für die korrekte Ausführung des Makros ist das Einrücken der Zeilen jedoch nicht erforderlich. Die Makros der Listings 2.1 und 2.2 könnten ebenso problemlos ausgeführt werden, wenn jede Zeile am äußeren linken Rand des Moduls beginnen würde. Das Einrücken der Zeilen ist ein gestalterisches Element, das Programmierer sich zu eigen machen, um das Programm leichter verständlich zu machen und so die Pflege des Programms zu vereinfachen.
Wenn Sie einen farbigen Bildschirm verwenden, um sich ein Makro anzusehen, werden Sie feststellen, daß die unterschiedlichen Teile des Makros in unterschiedlichen Farben dargestellt werden. Kommentare werden in grüner Schrift und Schlüsselwörter wie Sub und End Sub in blauer Schrift auf dem Bildschirm angezeigt. Der restliche Text des Makros wird mit schwarzer Schrift dargestellt. Er enthält Daten und Programmanweisungen, die vom Benutzer erstellt wurden. VBA übernimmt selbständig die Farbzuweisung, so daß es für Sie einfach ist, zwischen den unterschiedlichen Teilen des Makros und den verschiedenen Anweisungen zu differenzieren.
Mit dem Befehl Suchen im Menü Bearbeiten, können Sie bestimmte Begriffe oder Ausdrücke in einem Modul suchen. Mit dem Befehl Ersetzen im Menü Bearbeiten können Sie diese Begriffe oder Ausdrücke ersetzen.
Veränderungen, die Sie in einem Modul vorgenommen haben, speichern Sie mit dem Befehl Speichern im Menü Datei des VB-Editors oder durch Anklicken der Schaltfläche Speichern auf der Symbolleiste. Änderungen werden gleichzeitig mit dem Dokument oder der Arbeitsmappe des jeweiligen Moduls gespeichert. (Bei Word werden beim Verlassen des Dokuments alle Änderungen automatisch in der Vorlage NORMAL.DOT gespeichert. Wenn Sie eine Excel-Arbeitsmappe verlassen, werden Sie gefragt, ob Sie die an PERSONAL.XLS vorgenommenen Änderungen speichern möchten).
Um die Bearbeitung eines Makros an einem Beispiel zu erläutern, werden dem in Übung 1.4 an Tag 1 aufgezeichneten Makros einige Kommentare hinzugefügt. In Listing 2.3 sehen Sie, wie das Makro NewWorkbook aus Übung 1.4 aussehen könnte. Der Makro-Quelltext des Listings 2.3 wurde noch einmal formatiert, so daß die Anweisungen problemlos auf einer Buchseite Platz finden. Das Format Ihres Makro-Quelltextes sieht etwas anders aus. Das gilt vor allem für die Zeilen 10 15 des Listing 2.3, die in dem aufgezeichneten Makro weniger Platz in Anspruch nehmen (siehe Abbildung 2.11).
Listing 2.3: Das Makro NewWorkbook
1: Sub NewWorkbook () 2: ' 3: ' NewWorkbook Makro 4: ' Makro am 14.12.96 von Matthew Harris aufgezeichnet. 5: ' Erzeugt und speichert eine neue Arbeitsmappe. 6: ' 7: 8: ' 9: Workbooks.Add 10: ActiveWorkbook.SaveAs FileName:="C:\ Eigene Dateien\NewBook.xls", _ 11: FileFormat:= xlNormal, _ 12: Password:=" ", _ 13: WriteResPassword:=" ", _ 14: ReadOnlyRecommended:=False, _ 15: CreateBackup:=False, _ 16: ActiveWindow.Close 17: End Sub
Das Zeilenfortsetzungszeichen von VBA
Wenn Sie sich die Zeilen 10 bis 14 im Listing 2.3 noch einmal näher ansehen, finden Sie am Ende dieser Zeilen das Zeichen für Unterstreichung (_). Das Unterstreichungszeichen wird von dem ihm vorausgehenden Zeichen durch einen Leerschritt getrennt. Ein Leerzeichen in Kombination mit einer Unterstreichung am Zeilenende wird Zeilenfortsetzungszeichen genannt und signalisiert VBA, daß das Ende der Anweisung noch nicht erreicht wurde und die Anweisung in der nächsten Zeile fortgeführt wird.
Die Zeilen 10 bis 15 des Listing 2.3 gehören daher zusammen und bilden eine einzige Anweisung. In diesem Listing ist es die Anweisung, die Arbeitsmappe zu speichern, wobei mehrere Optionen für die Speicherung zur Verfügung stehen. Um die Lesbarkeit des Makros zu steigern, hat der Makrorecorder eine logische Zeile mit Hilfe des Zeilenfortsetzungszeichen in mehrere physikalische Zeilen unterteilt. (Der Makro-Quelltext wurde dann noch weiter bearbeitet, wobei noch weitere Unterstreichungen eingefügt wurden).
Wäre die eine logische Zeile nicht mit Hilfe des Zeilenfortsetzungszeichen in mehrere physikalische Zeilen aufgeteilt worden, würde die Länge dieser Anweisung die Breite eines Modulfensters übersteigen, auch wenn dieses auf seine volle Größe eingestellt worden wäre. Sie müßten dann den horizontalen Bildlauf benutzen, um sich die gesamte Zeile ansehen zu können. Das Zeilenfortsetzungszeichen können Sie später auch bei der Erstellung Ihrer eigenen Makros einsetzen, um die Lesbarkeit Ihrer Quelltexte zu steigern.
Anweisungen, die sich durch den Gebrauch des Zeilenfortsetzungszeichens auf mehrere Zeilen erstrekken, werden um eine weitere Ebene eingerückt, so daß Sie schnell erkennen können, welche Zeilen zu einer Anweisung gehören.
Um dem Makro NewWorkbook Kommentare hinzuzufügen, gehen Sie wie folgt vor:
1. Bringen Sie die Einfügemarke an das Ende von Zeile 8 (siehe Listing 2.3).
2. Drücken Sie auf die Eingabetaste, um eine Leerzeile einzufügen.
3. Schreiben Sie einen Apostroph ('). Alle Kommentare beginnen mit einem Apostroph.
4. Schreiben Sie jetzt Ihren Kommentar, in diesem Fall ist es der Satz: Die nächste Zeile erzeugt eine neue Arbeitsmappe.
5. Wiederholen Sie die Schritte 1 und 2 und fügen Sie vor Zeile 10 eine Leerzeile ein (siehe Abbildung 2.3).
6. Schreiben Sie einen Apostroph, um zu signalisieren, daß der folgende Text einen Kommentar darstellt; schreiben Sie dann: In der nächsten Zeile wird die Arbeitsmappe gespeichert.
Listing 2.4 enthält das geänderte Makro NewWorkbook. Die Zeilen 9 bis 11 sind die hinzugefügten Kommentarzeilen. Ihr bearbeitetes Makro sieht jetzt aus wie das Makro, das in Abbildung 2.12 dargestellt wird, vorausgesetzt, daß Sie Ihr Makro nicht zuvor neu formatiert haben, um es Listing 2.3 anzupassen.
Listing 2.4: Das Makro NewWorkbook mit den hinzugefügten Kommentaren.
1: Sub NewWork () 2: ' 3: ' NewWorkbook Makro 4: ' Makro am 14.12.96 von Matthew Harris aufgezeichnet. 5: ' Erzeugt und speichert eine neue Arbeitsmappe. 6: ' 7: 8: ' 9: 'Die nächste Zeile erzeugt eine neue Arbeitsmappe. 10: Workbooks.Add 11: 'In der nächsten Zeile wird die Arbeitsmappe gespeichert. 12: ActiveWorkbook.SaveAs FileName:="C:\Eigene Dateien\NewBook.xls", _ 13: FileFormat:= xlNormal, _ 14: Password:=" ", _ 15: WriteResPassword:=" ", _ 16: ReadOnlyRecommended:=False, _ 17: CreateBackup:=False 18: 'In der nächsten Zeile wird die Arbeitsmappe geschlossen. 19: ActiveWindow.Close 20: End Sub
Abbildung
2.12:
Das bearbeitete Makro NewWorkbook im Code-Fenster. |
Wenn Sie Ihrem Makro NewWorkbook die Kommentare hinzufügen, werden Sie feststellen, daß die Schrift in der neu eingefügten Zeile zunächst schwarz auf Ihrem Bildschirm erscheint. Wenn Sie die Einfügemarke durch Drücken der Eingabetaste, mit Hilfe des Bildlaufs oder mit der Maus an einer anderen Stelle positionieren, wird dem Kommentar die Farbe Grün zugewiesen. Die Farbänderung erfolgt nachträglich, da VBA die neue oder geänderte Zeile erst dann liest, wenn die Einfügemarke sie verlassen hat.
VBA überprüft jede neue oder geänderte Zeile des Makros auf ihre syntaktische Richtigkeit. (Syntax ist die Bezeichnung für das richtige Aufeinanderfolgen von Wörtern und Zeichen in einer Sprache und eben auch in einer Programmiersprache). Ist die Syntax der neuen oder geänderten Zeile korrekt, weist VBA der Zeile nach dem zuvor beschriebenen Schema die entsprechende Farbe zu. Wenn VBA in der Zeile einen Syntaxfehler entdeckt, wird diese Zeile in Rot dargestellt und auf dem Bildschirm erscheint eine der verschiedenen Meldungen über einen Syntaxfehler. Meldungen werden weiter unten in dieser Lektion beschrieben.
Sie sollten Ihren Makrorumpf möglichst schnell nach der Aufzeichnung mit den notwendigen Kommentaren versehen. Dies gilt besonders für lange Makros, da Sie sich später vielleicht nicht mehr an die einzelnen Aktionen erinnern werden, die Sie bei der Erstellung durchgeführt haben. Durch das Hinzufügen von Kommentaren ist es für Sie später im Bedarfsfall einfacher, Änderungen an Ihrem Makro vorzunehmen.
Wenn Sie ein aufgezeichnetes Makro verändern, sollten Sie Kommentare hinzufügen, die den Zweck der Änderung erklären. Die Aufgabe des Kommentars ist hier, kenntlich zu machen, welche Teile Sie geändert haben und warum diese Änderung notwendig war.
Um ein Makro zu kopieren, benutzen Sie die Windows-Zwischenablage und führen folgende Schritte aus:
1. Öffnen Sie das Makro, das kopiert werden soll.
2. Markieren Sie den gesamten Quelltext des Makros. Vergewissern Sie sich, daß Sie den gesamten Text des Makros einschließlich der Zeilen mit den Schlüsselwörtern Sub und End Sub erfaßt haben.
3. Kopieren Sie den Makro-Quelltext mit dem Befehl Kopieren aus dem Menü Bearbeiten in die Windows-Zwischenablage.
4. Öffnen Sie jetzt das Modul, in das Sie das kopierte Makro einfügen wollen.
5. Fügen Sie den Quelltext mit dem Befehl Einfügen im Menü Bearbeiten in das Modul ein.
Mit dieser Methode können Sie ein Makro in das bereits geöffnete Modul, in ein anderes Modul des gleichen Projekts oder auch in das Modul eines anderen Projekts kopieren. Sie können den Quelltext des Makros sogar in eine andere Windows-Anwendung, wie den Windows-Editor, kopieren.
Erstellen Sie immer dann eine Sicherungskopie Ihres Makros, wenn sie nicht genau wissen, welche Wirkung die vorgenommenen Veränderungen haben werden oder wenn das Makro sehr umfangreich ist.
Kopieren Sie die Sicherungskopie nicht in das Modul, in dem bereits die Originalversion des Makros abgelegt wurde. Wenn sich in einem Modul zwei oder mehr Makros mit dem gleichen Namen befinden, weiß VBA nicht, welches Makro ausgeführt werden soll, und reagiert mit der Fehlermeldung, daß in diesem Modul ein mehrdeutiger Name enthalten ist.
1. Wählen Sie aus dem Projekt-Explorer das Modul aus, das Sie exportieren wollen.
2. Wählen Sie aus dem Menü Datei den Befehl Datei exportieren. Der VB-Editor öffnet das Dialogfeld Datei exportieren, wie in Abbildung 2.13 dargestellt. Das Dialogfeld Datei exportieren weist im wesentlichen die gleichen Merkmale auf wie jedes andere Windows-Dialogfeld zur Speicherung von Dateien.
Abbildung
2.13:
Verwenden Sie das Dialogfeld Datei exportieren, um ein vollständiges Modul als Textdatei zu speichern. |
3. Vergewissern Sie sich, daß in der Liste Dateityp Basic-Dateien (*.bas) steht. Die Namenserweiterung .BAS signalisiert, daß es sich hier um eine Datei handelt, deren Quelltext in VBA oder Visual Basic erstellt wurde. In dieser Datei werden Textinformationen gespeichert.
4. Wählen Sie das Laufwerk und den Ordner, in dem Sie das exportierte Modul speichern wollen, aus der Liste Speichern in.
5. Geben Sie den gewünschten Namen für Ihre exportierte Datei in das Textfeld Dateiname ein. Wenn Sie keinen Namen eingeben, wählt der VB-Editor automatisch einen Namen für das Modul.
6. Klicken Sie auf Speichern, um die Datei zu exportieren. Der VB-Editor exportiert das ausgewählte Modul und schließt das Dialogfeld Datei exportieren.
Beim Exportieren des Moduls erstellt der VB-Editor eine Textdatei, in der sich alle Makros des Moduls befinden. Wenn nötig, können Sie Dateien mit der Namenserweiterung .BAS, die mit dem VB-Editor erstellt wurden, auch mit dem Windows-Editor betrachten oder bearbeiten. In Abbildung 2.14 wird das Modul mit dem Makro NewWorkbook aus Listing 2.4 im Windows-Editor dargestellt, nachdem es in eine Textdatei mit Namenserweiterung .BAS exportiert wurde. Wie Sie im Editor-Fenster der Abbildung 2.14 sehen können, befinden sich im Text der .BAS-Dateien mehrere zusätzliche Zeilen, die mit dem Wort Attribut beginnen. Im Code-Fenster der Abbildung 2.12 sind derartige Attributzeilen jedoch nicht zu sehen. Der VB-Editor erweitert die exportierte .BAS-Datei um diese zusätzlichen Zeilen, da sie Informationen enthalten, die VBA oder Visual Basic benötigen, um diese Datei später in ein anderes Projekt zu importieren.
Abbildung
2.14:
Anzeige eines exportierten Moduls im Editor von Windows. |
1. Wählen Sie aus dem Projekt-Explorer das Projekt, in das Sie die .BAS-Datei importieren wollen.
2. Wählen Sie Datei importieren aus dem Menü Datei. Der VB-Editor öffnet das Dialogfeld Datei importieren. Das Dialogfeld Datei importieren weist im wesentlichen die gleichen Merkmale auf wie das Dialogfeld Datei öffnen in anderen Windows-Anwendungen.
3. Verwenden Sie die Liste Suchen in, um das richtige Laufwerk anzusprechen und den Ordner zu finden, in dem sich die Datei befindet, die Sie in Ihr Projekt importieren wollen. Es ist nur möglich, Dateien zu importieren, die zuvor vom VB-Editor als Modul exportiert wurden.
4. Vergewissern Sie sich, daß in der Liste Dateityp VB-Datei (*.frm, *.bas, *.cls) ausgewählt wurde.
5. Doppelklicken Sie auf die zu importierende Datei. Der VB-Editor liest die Datei und fügt das Modul Ihrem Projekt hinzu. Enthält das Projekt bereits ein Modul mit dem selben Namen wie das von Ihnen importierte Modul, erweitert der VB-Editor den Modulnamen am Ende um eine Zahl (1, 2, 3, usw.). So wird vermieden, daß ein Projekt mehrere Module mit identischen Namen enthält.
An Tag 15, wenn Formulare behandelt werden, sollten Sie daran denken, daß Sie Textbeschreibungen in von Ihnen erstellten Formularen genauso exportieren und importieren können wie Module. Textbeschreibungen in Formularen werden in Dateien mit der Namenserweiterung .FRM gespeichert. Wenn VBA eine .FRM-Datei importiert, werden dabei die Textbeschreibungen in der Datei benutzt, um das Formular wiederherzustellen.
Denken Sie daran, daß CLS. die Namenserweiterung für Dateien mit Klassenmodulen ist, mit denen Sie Ihre eigenen benutzerdefinierten Objekte in VBA erstellen können. Klassenmodule werden an Tag 10, »Datentypen und Variablen: Weiterführende Themen«, vorgestellt.
1. Wählen Sie im Fenster des Projekt-Explorer das Modul, das Sie aus Ihrem Projekt entfernen wollen.
2. Wählen Sie im Menü Datei den Befehl Entfernen von <Objekt>. Der VB-Editor öffnet ein Dialogfeld und fragt Sie, ob Sie das Modul exportieren wollen, bevor Sie es entfernen.
Sie können ein Modul auch entfernen, indem Sie im Projekt-Explorer den Mauszeiger auf das zu löschende Modul bewegen und dann die rechte Maustaste drücken. Es öffnet sich ein Pop-up-Menü, in dem Sie dann den Befehl Entfernen anklicken.
3. Klicken Sie auf Ja, wenn Sie das Modul exportieren möchten, bevor Sie es entfernen. (Wir empfehlen, das Modul unbedingt als .BAS-Datei zu exportieren, sofern Sie nicht absolut sicher sind, daß Sie die Makros in diesem Modul nie wieder benötigen werden). Wollen Sie das Modul entfernen, ohne es zuvor zu exportieren, klicken Sie auf Nein.
4. Wenn Sie das Modul exportieren möchten, bevor Sie es entfernen, öffnet der VB-Editor das oben beschriebene Dialogfeld Datei exportieren. Geben Sie, wie bereits beschrieben, die notwendigen Informationen in das Dialogfeld Datei exportieren ein und klicken Sie dann auf Speichern.
Unabhängig davon, ob Sie das Modul zuvor exportiert haben oder nicht, wird es jetzt vom VB-Editor aus Ihrem Projekt entfernt.
Achten Sie darauf, daß Sie nur das Modul markieren, das Sie entfernen wollen. Das Entfernen eines Moduls kann nicht rückgängig gemacht werden.
Denken Sie daran, daß Sie andere Objekte, wie z.B. Formulare, genauso aus Ihrem Projekt entfernen wie Module.
Exportieren Sie alle Objekte, bevor Sie sie entfernen, sofern Sie sich nicht absolut sicher sind, daß Sie das Objekt oder dessen Inhalt nie wieder benötigen werden.
Die Begriffe Makro und Prozedur
Bis jetzt wurde der Begriff Makro sowohl für aufgezeichnete als auch für selbstgeschriebene Makros verwendet. An dieser Stelle soll ein weiterer Begriff eingeführt werden, mit dem zwischen aufgezeichneten Makros und selbst geschriebenen Makros unterschieden werden kann. Genaugenommen bezieht sich der Begriff Makro nur auf Anweisungen, die mit dem Makrorecorder aufgenommen oder die mit dem Makrobuilder von Access zusammengestellt wurden. Die exakte Bezeichnung für Makros, deren Quelltext Sie selbst geschrieben haben, ist Unterprozedur oder auch nur Prozedur. Im weiteren Verlauf dieses Buchs wird der Begriff Makro verwendet, wenn die Rede von Aktionen ist, die mit dem Makrorecorder aufgezeichnet wurden, und der Begriff Prozedur, wenn Sie den VBA-Quelltext selbst geschrieben haben.
Wenn Sie Ihre VBA-Prozedur in einem neuen Modul schreiben müssen oder wollen, gehen Sie wie folgt vor:
1. Stellen Sie in der VBA-Host-Anwendung (Word oder Excel) sicher, daß das Dokument, die Vorlage oder die Arbeitsmappe, wo Sie die Prozedur speichern möchten, bereits geöffnet ist.
2. Drücken Sie (Alt)+(F11), um den VB-Editor zu aktivieren.
3. Wählen Sie im Projekt-Explorer das Projekt, dem Sie Ihr Modul hinzufügen wollen.
4. Klicken Sie im Menü Einfügen auf den Befehl Modul oder benutzen Sie die Drop-down-Liste Einfügen auf der Symbolleiste. Der VB-Editor fügt Ihrem Projekt ein neues Modul hinzu und öffnet ein Code-Fenster für das neue Modul.
Wenn der VB-Editor ein neues Moduls einfügt, erhält dieses Modul nach den in diesem Kapitel bereits erläuterten Richtlinien einen Standardnamen. Der Standardname des neuen Moduls ist Modul gefolgt von einer Nummer. Sie sollten das neu eingefügte Modul jedoch umbenennen, so daß der Modulname gleichzeitig beschreibende Funktion hat. Um ein Modul umzubenennen, führen Sie folgende Schritte aus:
5. Wählen Sie aus dem VB-Editor das Modul, das Sie umbenennen wollen.
6. Wenn das Eigenschaften-Fenster noch nicht geöffnet wurde, klicken Sie auf Eigenschaften-Fenster im Menü Ansicht oder klicken Sie auf der Symbolleiste auf die Schaltfläche Eigenschaften-Fenster. In Abbildung 2.15 sehen Sie das Eigenschaften-Fenster eines Moduls. Die einzige Eigenschaft eines Moduls ist der Modulname.
7. Schreiben Sie im Eigenschaften-Fenster in das Textfeld Name den neuen Namen Ihres Moduls. Sobald Sie die Einfügemarke aus dem Textfeld Name entfernen, benennt der VB-Editor das Modul um.
Sie sollten dem neuen Modul sofort, nachdem Sie es eingefügt haben, einen beschreibenden Namen geben. Der Modulname sollte mit der Aufgabe des Moduls in Zusammenhang stehen und einen Hinweis auf die Prozeduren geben. Die Standardnamen des VB-Editors wie Modul1 sagen nicht besonders viel über die Prozeduren im Modul aus.
Der VBA- Quelltext für die Prozedur kann an jeder beliebigen Stelle im Modul eingefügt werden. Sie müssen jedoch darauf achten, daß der Anfang der neuen Prozedur nach der End-Sub-Anweisung beginnt, die das Ende der vorherigen Prozedur signalisiert und vor der Sub-Anweisung endet, die signalisiert, daß die nächste Prozedur des Moduls anfängt. Für die meisten Benutzer ist es am einfachsten, die neue Prozedur am Ende des Moduls einzufügen.
Der erste Schritt beim Schreiben einer Prozedur besteht darin, den Prozedurnamen festzulegen. Den Anfang der Prozedur kennzeichnen Sie mit Sub und das Ende mit End Sub. Wenn Sie eines dieser drei Elemente vergessen, ist Ihre Syntax fehlerhaft und VBA reagiert bei dem Versuch, das Programm auszuführen, mit einer Fehlermeldung.
Jeder, der eine Programmiersprache erlernt, schreibt als erste Übung ein Programm, daß auf dem Bildschirm die Nachricht Hello, World anzeigt. In Listing 2.5 sehen Sie ein derartiges VBA-Programm mit nur einer Prozedur.
Um dieses VBA-Programm einzugeben, führen Sie folgende Schritte aus:
1. Öffnen Sie ein Word-Dokument oder eine Excel-Arbeitsmappe, oder erstellen Sie ein neues Dokument oder eine neue Arbeitsmappe.
2. Drücken Sie (Alt)+(F11), um den VB-Editor zu aktivieren.
3. Wählen Sie aus dem Projekt-Explorer ein Dokument oder eine Arbeitsmappe. Speichern Sie Ihre erste Prozedur in dem ausgewählten Dokument oder der ausgewählten Arbeitsmappe.
4. Klicken Sie im Menü Einfügen auf Modul, um Ihrem Projekt ein neues Modul hinzuzufügen. Der VB-Editor fügt dem Projekt das neue Modul hinzu und öffnet dessen Code-Fenster.
5. Geben Sie Ihrem Modul einen Namen, wobei der neue Name in diesem Beispiel FirstProgram sein soll.
6. Vergewissern Sie sich, daß sich die Einfügemarke am Anfang einer leeren Zeile im Code-Fenster befindet, und geben Sie den Text aus Listing 2.5 ein. Drücken Sie am Ende jeder Zeile die Eingabetaste, um eine neue Zeile einzufügen.
Schreiben Sie den Quelltext des Listings 2.5 genauso in Ihr Modul, wie er im Listing dargestellt wird. Lassen Sie jedoch die Numerierung weg. (Die Numerierungen sind nicht Bestandteil der Prozeduren und der Makro-Listings. Sie haben nur Hinweisfunktion und sollen Ihnen das Suchen bestimmter Zeilen erleichtern, die gerade diskutiert werden.
Der VB-Editor verfügt über einige Funktionen, die Ihnen das Schreiben von Prozeduren erleichtern. Wenn Sie das Schlüsselwort Sub und den Prozedurnamen eingegeben und anschließend die Eingabetaste gedrückt haben, fügt der VB-Editor automatisch das Schlüsselwort End Sub ein. Auf diese Weise wird vermieden, daß Sie dieses wichtige Element Ihrer Prozedur aus Versehen vergessen.
Außerdem wurde in dem VB-Editor eine QuickInfo-Funktion integriert. Wenn Sie MsgBox eingeben und dann auf die Leertaste drükken, (Zeile 2 des Listing 2.5), erscheint ein Pop-up-Menü, das eine Liste mit allen Argumenten für die gerade geschriebene VBA-Prozedur oder -Funktion anzeigt, in diesem Fall also MsgBox. In Abbildung 2.16 sehen Sie ein Pop-up-Fenster mit Informationen über die Argumente der systemdefinierten VBA-Prozedur MsgBox. Im QuickInfo-Fenster sehen Sie das jeweilige Argument im Fettdruck, von dem der VB-Editor vermutet, daß Sie gerade den Wert dieses Arguments eingeben. (Ein Argument ist eine Information, die die Prozedur für die Erfüllung ihrer Aufgaben benötigt. Weiter unten in diesem Abschnitt und an Tag 5 werden Argumente näher erläutert). Haben Sie die Eingabetaste gedrückt, um im Code-Fenster eine neue Zeile zu beginnen, oder mit den Pfeiltasten oder der Maus die Einfügemarke in einer anderen Zeile positioniert, schließt sich das QuickInfo-Pop-up-Fenster. (Das QuickInfo-Fenster können Sie auch durch Betätigen der Esc-Taste schließen).
Wenn Sie das Quickinfo als störend empfinden, können Sie diese Funktion mit dem Befehl Optionen im Menü Extras des VB-Editors ein- und ausschalten. Weitere Informationen über das Dialogfeld Optionen finden Sie in der Online-Hilfe des VB-Editors.
Listing 2.5: Die Prozedur HelloWorld
1: Sub HelloWorld () 2: MsgBox "Hello, World!" 3: End Sub
Abbildung
2.15:
Das QuickInfo-Pop-up-Fenster für MsgBox. |
Die erste Zeile des Listing 2.5 ist die Deklaration der Prozedur. Die Prozedurdeklaration (auch Makrodeklaration genannt) ist die Anweisung, die VBA diese Prozedur bekannt macht und den Anfang des Prozedur-Quelltextes kennzeichnet.
Jede Deklaration einer Prozedur beginnt mit dem Schlüsselwort Sub, gefolgt von einem Leerschritt und dem Prozedurnamen. Der Prozedurname des Listing 2.5 ist HelloWorld. Zwei leere Klammern bilden den Abschluß der Prozedurdeklaration. Diese Klammern dürfen nicht weggelassen werden (die genaue Funktion dieser Klammern wird an den Tagen 6 und 11 beschrieben). Wenn Sie die Klammern am Ende der Deklaration vergessen, fügt VBA sie selbständig ein, nachdem Sie die Zeile verlassen haben.
Damit die Deklaration syntaktisch korrekt wird, muß das Schlüsselwort Sub das erste Wort in der Zeile sein. Außerdem darf diese Zeile nur aus einer VBA-Anweisung bestehen, nämlich der Deklaration. Nach der Deklaration kann jedoch ein Kommentar folgen.
Sie können am Ende einer Zeile mit einer VBA-Anweisung einen Kommentar einfügen, indem Sie zuerst einen Leerschritt, dann einen Apostroph (') und zuletzt die Kommentartext selbst eingeben. Derartige Kommentare werden als nachfolgende Kommentare bezeichnet. In der folgenden Zeile eines VBA-Quelltextes sehen Sie einen nachfolgenden Kommentar:
ChDir "E:\" 'ändert das aktuelle Verzeichnis in E:\
Die zweite Zeile des Listing 2.5 stellt den Rumpf der Prozedur dar und ist die einzige Anweisung der Prozedur, die eine Aktion ausführt. Der Rumpf einer Prozedur kann aus keiner, mehreren oder vielen Anweisungen bestehen. Durch die MsgBox-Anweisung erscheint auf dem Bildschirm eine Meldung in einem Dialogfeld. Weiter unten in diesem Abschnitt wird die MsgBox-Anweisung näher beschrieben.
Die dritte und letzte Zeile der Prozedur HelloWorld mit dem Schlüsselwort End Sub signalisiert VBA, daß das Ende dieser Prozedur erreicht wurde. VBA beendet die Ausführung der Prozedur, wenn diese Zeile erreicht wird. Ähnlich wie bei der Deklaration, muß die letzte Zeile mit den Schlüsselwörtern End Sub beginnen. Die letzte Zeile einer Prozedur darf nur diese Anweisung enthalten, wobei ihr jedoch ein nachfolgender Kommentar hinzugefügt werden kann. Wie oben beschrieben, fügt der VB-Editor die letzte Zeile automatisch ein, nachdem Sie die Deklaration der Prozedur geschrieben haben.
Wenn Sie die Projektdatei speichern, die die Prozedur enthält, werden gleichzeitig alle Sub-Prozeduren gespeichert.
Nachdem Sie den Quelltext für die Prozedur HelloWorld geschrieben haben, können Sie die Prozedur, wie an Tag 1 beschrieben, ausführen.
1. Wählen Sie den Befehl Makros aus dem Menü Extras, um das Dialogfeld Makros zu öffnen.
2. Klicken Sie in der Liste Makroname auf die Prozedur HelloWorld.
3. Klicken Sie auf die Schaltfläche Ausführen.
Bei Ausführung der Prozedur HelloWorld des Listing 2.5 erscheint auf dem Bildschirm das in Abbildung 2.17 dargestellte Dialogfeld. Die Titelzeile des Dialogfelds hängt von der jeweiligen Host-Anwendung ab, in der Sie Ihre Prozedur erstellt haben. Klicken Sie auf die Schaltfläche (OK), um die Anzeige des Dialogfelds und die Prozedur zu beenden.
Abbildung
2.16:
Die Prozedur HelloWorld aus Listing 2.6 gibt ihre Meldung in diesem Dialogfeld aus. |
Achten Sie darauf, daß Sie die End Sub-Anweisung nicht versehentlich löschen, da dadurch gravierende Probleme auftreten können.
Sogar bei dieser kurzen Prozedur wird der Prozedurrumpf eingerückt, um ihn optisch von der Deklaration und dem Ende der Prozedur zu trennen. Um die Lesbarkeit von Quelltexten zu steigern, sollten Sie eigentlich nie auf das Einrücken der einzelnen Teile verzichten. Bei dem Vergleich von Listing 2.5 mit dem folgenden Listing wird deutlich, daß schon bei kurzen Prozeduren das Einrücken von Anweisungen das Lesen von Quelltexten erleichtert.
1: Sub HelloMacro () 2: MsgBox "Hello, World!" 3: End Sub
Das Merkmal Automatischer Einzug
Der VBA-Editor enthält ein spezielles Merkmal namens Automatischer Einzug, das bei der Erstellung des Quelltextes den Einzug für einzelne Textteile automatisch vornimmt. Wenn der automatische Einzug eingeschaltet ist, beginnt jede neue Zeile in der gleichen Einzugsebene wie die vorherige Zeile. (Drücken Sie die Rücksetztaste(Cursor rechts), um eine Einzugsebene zu entfernen).
Sie können den automatischen Einzug ein- und ausschalten, indem Sie das Dialogfeld Optionen öffnen und das Kontrollkästchen Automatisch Einzug vergrössern auf der Registrierkarte Editor aktivieren oder deaktivieren. Das Dialogfeld Optionen finden Sie im Menü Extras unter Optionen. Standardmäßig ist bei VBA der automatische Einzug aktiviert.
Um eine Prozedur während der Bearbeitung auszuführen, sind folgende Schritte notwendig:
1. Vergewissern Sie sich, daß sich die Einfügemarke innerhalb des Quelltextes der auszuführenden Prozedur befindet. Dies kann der Rumpf, die Deklarationszeile oder auch die End-Sub-Anweisung der Prozedur sein.
2. Klicken Sie auf den Befehl Sub-/UserForm ausführen im Menü Ausführen. VBA führt die gesamte Prozedur von Anfang bis Ende aus.
Es ist möglich, eine Prozedur während der Bearbeitung auszuführen. Positionieren Sie die Einfügemarke innerhalb des Prozedur-Quelltextes. Klicken Sie dann auf die Schaltfläche Sub-/UserForm ausführen auf der Symbolleiste, oder drücken Sie (F5).
Um zum Beispiel die Prozedur HelloWorld auszuführen, gehen Sie mit der Einfügemarke auf irgendeine Stelle im Quelltext, und wählen Sie den Befehl Sub-/UserForm ausführen im Menü Ausführen.
Befindet sich die Einfügemarke nicht im Quelltext der Prozedur, wenn Sie den Befehl Sub-/UserForm ausführen im Menü Ausführen wählen oder auf die entsprechende Schaltfläche auf der Symbolleiste klicken, weiß VBA nicht, welche Prozedur ausgeführt werden soll, und zeigt deshalb das Dialogfeld Makros an.
Die MsgBox-Anweisung ist bereits als eine Art Prozedur in VBA intergriert. Die Zeile in der Prozedur HelloWorld, die die MsgBox-Anweisung enthält, signalisiert VBA diese integrierte Prozedur auszuführen oder aufzurufen. Die MsgBox-Anweisung aus Listing 2.5 wird nachfolgend noch einmal dargestellt:
MsgBox "Hello, World!"Der Text in den Anführungszeichen, der auf den Prozedurnamen MsgBox folgt, wird von MsgBox als Nachricht auf dem Bildschirm dargestellt. VBA gibt diese zusätzliche Information an die Prozedur MsgBox weiter, damit diese die Information verarbeitet. Zusätzliche Informationen, die an im Quelltext aufgerufene Prozeduren zur Verarbeitung weitergegeben werden, bezeichnet man als Argument. Der Text »Hello, World!« ist das Argument der Prozedur MsgBox. (An den Tagen 6 und 11 wird erläutert, wie Sie selbst Prozeduren mit Argumenten erstellen können). Die Anführungsstriche (») am Anfang und am Ende des Arguments »Hello, World!«, signalisieren, daß der Text zwischen den Anführungsstrichen Daten für die Prozedur enthält und keine Befehle, die von VBA ausgeführt werden müssen.
Sehen Sie sich noch einmal die Abbildung 2.17 an. Sie werden feststellen, daß durch die MsgBox-Anweisung ein Dialogfeld mit dem Titel Microsoft Word angezeigt wurde. Wird durch die MsgBox-Anweisung ein Dialogfeld geöffnet, erscheint in der Titelleiste standardmäßig der Name der Host-Anwendung, in der die VBA-Prozedur ausgeführt wird. In diesem Fall ist es Word.
Sie können den Titel eines von MsgBox angezeigten Dialogfelds ändern. In Abbildung 2.18 sehen Sie die Prozedur HelloWorld aus Listing 2.6, nachdem die MsgBox-Anweisung aus Listing 2.5 verändert wurde.
Wenn Sie die Abbildung 2.18 mit der Abbildung 2.17 vergleichen, werden Sie feststellen, daß der neue Titel jetzt Greeting Box lautet.
Listing 2.6: Anzeige eines benutzerdefinierten Dialogfelds mit Hilfe von MsgBox
Sub HelloWorld () MsgBox "Hello, World!", ,"Greeting Box" End Sub
Abbildung
2.17:
Dialogfeld, das von der MsgBox-Anweisung aus Listing 2.6 geöffnet wird. Beachten Sie, daß sich der Titel des eldes bbildung 2.17 unterscheidet. |
Die MsgBox-Anweisung (Zeile 2 im Listing 2.6) der Prozedur unterscheidet sich von der ursprünglichen Version, obwohl Sie innerhalb der Prozedur ihre Funktion beibehalten hat, nämlich eine Meldung auf dem Bildschirm auszugeben. In Listing 2.6 folgen jetzt auf den Prozedurnamen MsgBox drei Argumente, die durch Kommas voneinander getrennt werden.
Das erste Argument der MsgBox-Anweisung ist der Text, der durch die MsgBox angezeigt werden soll. Somit ist dieses Argument identisch mit dem in Listing 2.5. (Dieses wird im QuickInfo-Fenster als Argument Prompt ausgegeben.) Da die neue MsgBox-Anweisung mehr als nur ein Argument enthält, werden die einzelnen Argumente durch Kommas voneinander getrennt. Argumentlisten in VBA-Prozeduren werden genauso durch Kommas getrennt, wie Aufzählungen in einem geschriebenen Satz.
Wenn Sie das erste Komma setzen, um das erste Argument vom zweiten Argument zu trennen, werden Sie feststellen, daß sich das QuickInfo-Fenster verändert. Das Argument Buttons wird jetzt im Fettdruck dargestellt, dagegen das Argument Prompt wieder in der Standardschrift. Gleichzeitig erscheint im Modul ein Drop-down-Listenfeld. Dieses Drop-down-Listenfeld enthält alle zulässigen Werte für das Argument Buttons. Der VB-Editor öffnet diese Liste, da er über das Merkmal automatische Daten-Tips verfügt. Automatitische Daten-Tips funktionieren ähnlich wie die automatische QuickInfo, nur daß die zulässigen Werte für die Argumente einer Prozedur und andere Elemente Ihres VBA-Quelltextes auflisten.
Das zweite Argument einer MsgBox-Anweisung ist optional. Bei diesem Beispiel entfällt das optionale zweite Argument. Ein Leerzeichen in der Argumentliste übernimmt die Funktion des Platzhalters für das fehlende Argument. Das Leerzeichen informiert VBA, daß das optionale Argument in der Liste fehlt. (Wenn Sie vergessen, die beiden Kommas durch das Leerzeichen zu trennen, fügt VBA dieses Leerzeichen ein. Die Kommas müssen Sie jedoch selbst eingeben).
Das optionale zweite Argument der MsgBox-Anweisung ist das Argument Buttons. Das Argument Buttons wird im QuickInfo-Fenster zwischen zwei eckigen Klammern dargestellt, die signalisieren, daß es sich hier um ein optionales Argument handelt. Mit dem Argument Buttons können Sie festlegen, wieviel und welche Art von Schaltflächen in Ihrem durch MsgBox angezeigten Dialogfeld erscheinen sollen. Wenn Sie, wie in diesem Beispiel, das zweite Argument auslassen, besitzt dieses Dialogfeld nur eine Schaltfläche, nämlich die Schaltfläche OK. (An den Tagen 5 und 8 lernen Sie mehr über das optionale Argument Buttons).
Mit dem dritten und letzten Argument der MsgBox-Anweisung legen Sie den Titel des Dialogfelds fest (siehe Abbildung 2.18). Sobald Sie das zweite Argument durch ein Komma vom dritten getrennt haben, erscheint in der Argumentliste der MsgBox-Anweisung das QuickInfo-Fenster mit dem Hinweis, das der Wert des Arguments, das Sie als nächstes schreiben werden, das Argument Titel ist.
Wie schon beim ersten Argument wird auch der Text für die Titelleiste des Dialogfelds zwischen zwei Anführungszeichen (") geschrieben. VBA interpretiert Text in Anführungsstrichen immer als Daten und nicht als auszuführenden Befehl. Wenn Sie vergessen haben sollten, den Nachrichtentext von MsgBox oder den Text für die Titelleiste in Anführungszeichen zu setzen, reagiert VBA mit einer Fehlermeldung. Da das dritte Argument gleichzeitig das letzte ist, folgt auf dieses Argument kein Komma.
Wenn Sie eine neue Befehlszeile geschrieben oder eine Zeile geändert haben, analysiert VBA diese Zeile, sobald Sie die Einfügemarke an einer anderen Stelle positionieren. (Dieser Analyseprozeß wird auch als Parsing bezeichnet und bedeutet, daß die gesamte VBA-Anweisung in Ihre Einzelteile unterteilt wird, wobei VBA zwischen Schlüsselwörtern, Variablen und Daten unterscheidet. Diese Vorgehensweise ist mit der Bestimmung einzelner Satzteile eines geschriebenen Satzes wie Nomen, Verben, Adjektive usw. zu vergleichen). Nachdem VBA eine Befehlszeile erfolgreich analysiert hat, wird diese Zeile kompiliert. (Kompilieren bedeutet im Zusammenhang mit VBA, daß der Quelltext in einer Form aufbereitet wird, die eine direkte Ausführung durch VBA erlaubt, ohne daß eine erneute Analyse des Quelltextes notwendig wird.
Wenn VBA eine Quelltextzeile einer Prozedur erfolgreich analysiert und kompiliert hat und bei diesen Prozessen keine Fehler aufgetreten sind, werden den unterschiedlichen Elementen der Zeile verschiedene Farben zugewiesen. VBA-Schlüsselwörter werden blau, Kommentare grün und Daten und andere Anweisungen schwarz dargestellt. Wenn VBA jedoch während des Parsing und des Kompilierens einen Syntaxfehler in der Zeile entdeckt, wird die gesamte Zeile in Rot dargestellt und es erscheint ein Dialogfeld mit einer Fehlermeldung.
Sehen Sie sich folgende Befehlszeile mit der nicht korrekten MsgBox-Anweisung einen Moment etwas genauer an.
MsgBox "Hello, World!", , Greeting BoxIn diesem Beispiel wurden die Anführungszeichen für den Titel des Dialogfelds versehentlich vergessen. Daher identifiziert VBA die Wörter des letzten Arguments nicht als Daten, sondern vermutet, daß es sich bei Greeting um den Namen einer Variablen handelt. (Eine Variable ist die Bezeichnung für einen Speicherplatz zur Ablage von Daten. Variablen werden im nächsten Abschnitt erläutert).
Da VBA das dritte Argument in diesem Beispiel als Variable mit dem Namen Greeting identifiziert, wird als nächstes ein Komma oder das Ende der Argumentliste der MsgBox-Prozedur erwartet. Statt dessen folgen ein Leerzeichen und ein Wort, von dem VBA vermutet, daß es sich hier um eine weitere Variable handelt. VBA kann die Zeile nicht lesen und stellt die gesamte Zeile in Rot dar, wobei das Wort oder die Stelle, an der VBA den Fehler entdeckt, markiert wird. Dann erfolgt die Anzeige einer Fehlermeldung, die in Abbildung 2.19 zu sehen ist. In dieser Abbildung sehen Sie außerdem, daß im Quelltext das Wort Box markiert wurde, da VBA den Fehler an dieser Stelle festgestellt hat.
Abbildung
2.18:
VBA gibt bei Eingabe oder Änderung einer Zeile Fehlermeldungen zu Syntaxfehlern aus. |
Wenn Sie eine derartige Meldung über einen Übersetzungs- oder Sytaxfehler erhalten, klicken Sie auf die Schaltfläche Hilfe, um die Online-Hilfe von VBA zu aktivieren, in der Sie zusätzliche Informationen über diesen speziellen Syntaxfehler finden. Schließen Sie das Dialogfeld mit der Fehlermeldung, indem Sie auf die Schaltfläche OK klicken.
Nach dem Schließen des Dialogfelds mit der Fehlermeldung sollten Sie versuchen, den Fehler zu beheben. Auch wenn Sie nach dem Schließen des Dialogfelds mit der Einfügemarke auf eine andere Zeile springen, wird die Zeile, in der sich der Fehler befindet, weiterhin in Rot dargestellt. VBA analysiert und kompiliert die Zeile mit dem Syntaxfehler erst dann wieder, wenn Sie die Prozedur ausgeführen oder die Zeile erneut bearbeiten. VBA analysiert die Zeilen einer Prozedur nur dann, wenn Sie die Zeile, unmittelbar nachdem Sie die Änderung vorgenommen haben, verlassen oder wenn Sie die Prozedur ausführen.
Sie können den Modus für die Überprüfung der Syntax ein- und ausschalten. Obwohl es sehr empfehlenswert ist, eine Syntaxüberprüfung vornehmen zu lassen, da es viel Zeit kostet und viel Ärger verursacht, Fehler in einer nicht korrekten Prozedur zu suchen, können Sie die Überprüfung auch deaktivieren, indem Sie den Befehl Optionen aus dem Menü Extras wählen. Es öffnet sich das Dialogfeld Optionen. Um die Syntaxüberprüfung zu deaktivieren, klicken Sie auf die Registrierkarte Editor, um die Optionen des Editors anzuzeigen und deaktivieren das Kontrollkästchen Automatische Syntaxüberprüfung. Klicken Sie auf OK, wenn Sie die Einstellungen im Dialogfeld Editor beendet haben.
Stößt VBA während der Ausführung einer Prozedur auf eine Zeile mit einem Syntaxfehler, unterbricht VBA die Ausführung, zeigt das Modul mit der fehlerhaften Prozedur, markiert die Zeile, in der der Fehler gefunden wurde und zeigt auf dem Bildschirm eine Meldung über einen Fehler beim Kompilieren an.
Der Informationsgehalt von Fehlermeldungen, die VBA erstellt, wenn der Syntaxfehler während der Ausführung einer Prozedur gefunden wird, ist wesentlich geringer als der von Fehlermeldungen, die VBA anzeigt, wenn Fehler direkt nach dem Schreiben oder Ändern einer Anweisung entdeckt werden. Aus diesem Grund und um zu vermeiden, daß die Ausführung einer Prozedur unerwartet unterbrochen wird, sollten Sie versuchen, Syntaxfehler sofort zu korrigieren, nachdem Sie von VBA eine Fehlermeldung erhalten haben.
VBA kann die unterschiedlichsten Syntaxfehler identifizieren und teilt Ihnen die Fehlerquelle wie fehlende Kommas oder Anführungszeichen in der Fehlermeldung mit. Jedoch nicht jede Fehlermeldung ist so präzise. Manchmal ist VBA nicht in der Lage, festzustellen, an welcher Stelle in einer Anweisung ein Syntaxfehler gemacht wurde. VBA registriert dann nur, daß ein Fehler in der Anweisung enthalten sein muß.
Wenn Sie beim Auflösen eines Syntaxfehlers mit einem bestimmten VBA-Schlüsselwort oder einer integrierten Prozedur, wie MsgBox, Probleme haben, können Sie die Online-Hilfe aufrufen, indem Sie die Einfügemarke auf dem gewünschten Schlüsselwort oder Prozedurnamen positionieren und dann (F1) drücken. Sind in der Online-Hilfe Informationen zu diesem Schlüsselwort oder Prozedurnamen enthalten, werden Sie von VBA angezeigt.
Sehen Sie sich folgende VBA-Anweisung genauer an, die ebenfalls eine fehlerhafte MsgBox-Anweisung darstellt:
MsgBox "Hello, World!", "Greeting Box"In diesem Beispiel interpretiert VBA die MsgBox-Anweisung als korrekt. Der Datentext befindet sich zwischen Anführungszeichen und die einzelnen Argumente werden durch Kommas getrennt. (Da alle Argumente mit Ausnahme des ersten Arguments von MsgBox-Anweisung optional sind, findet VBA in der MsgBox zwei Argumente und interpretiert dies als korrekte Syntax). Bei dem Versuch diese Anweisung auszuführen, wird jedoch ein Fehler festgestellt und die in Abbildung 2.20 dargestellte Fehlermeldung angezeigt.
Abbildung
2.19:
VBA findet einige Fehler erst bei Ausführung der Prozedur und zeigt als Folge ein Dialogfeld zu dem Laufzeitfehler an. |
In dem Dialogfeld finden Sie die Meldung, daß während der Ausführung der Prozedur ein Fehler bemerkt wurde. Außerdem zeigt das Dialogfeld die Art des Fehlers an. In diesem Beispiel handelt es sich um den Fehler Typen unverträglich. Wenn Sie sich die oben dargestellte MsgBox-Anweisung noch einmal ansehen, werden Sie feststellten, daß das zweite Komma fehlt, das die Aufgabe des Platzhalters für das zweite optionale Argument Buttons in der MsgBox-Anweisung übernimmt (siehe Zeile 2 des Listing 2.6).
Beim Analysieren dieser Anweisung kompiliert VBA den in Anführungszeichen geschriebenen Text »Greeting Box« als zweites Argument von MsgBox. VBA kann nicht erkennen, daß es sich hier um das dritte Argument handelt, da der Platzhalter fehlt. Da VBA bei dem zweiten Argument, also dem Argument für die Befehlsschaltfläche eine Zahl erwartet und keinen Text, meldet VBA, daß der Typ der Daten, die der MsgBox-Prozedur übergegeben wurden, nicht mit den Datentypen übereinstimmen, die für dieses Argument erwartet wurden. (Datentypen werden in der nächsten Lektion detaillierter vorgestellt.)
Das Dialogfeld für Laufzeitfehler enthält mehrere Befehlsschaltflächen. In der folgenden Liste werden diese Schaltflächen vorgestellt.
Sie können entweder die Quelltexte aller VBA-Module Ihres Projekts auf einmal oder auch nur das aktuelle Modul ausdrucken. Einzelne Prozeduren auszudrucken, ist jedoch nicht möglich.
Um den Quelltext auszudrucken, gehen Sie wie folgt vor:
1. Wählen Sie aus dem Projekt-Explorer das Modul oder Projekt, das Sie ausdrucken wollen. Wenn Sie nur einen bestimmten Quelltext eines Moduls ausdrucken wollen, öffnen Sie das Modul und markieren Sie den entsprechenden Text.
2. Wählen Sie den Befehl Drucken aus dem Menü Datei. Der VB-Editor öffnet das Dialogfeld Drucken (siehe Abbildung 2.21).
Abbildung
2.20:
Sie können im Dialogfeld Drucken eine Vielzahl von Optionen für das Drucken festlegen. |
3. Legen Sie im Druckbereich fest, ob Sie die aktuelle Auswahl, das Aktuelle Modul oder das Aktuelle Projekt ausdrucken wollen.
4. Überprüfen Sie, ob das Kontrollkästchen Code in der Befehlsgruppe Drucken von für das Drucken eines Quelltextes aktiviert wurde. Enthält Ihr Projekt Formulare, aktivieren Sie das Kontrollkästchen Formulardarstellung, damit Darstellungen auf Ihrem Formular gedruckt werden können.
5. Wählen Sie alle anderen Druckoptionen ähnlich wie in Word oder Excel.
6. Klicken Sie auf OK, um Ihren Quelltext auszudrucken.
Beim Ausdrucken eines Projekts oder Moduls ist es nicht möglich, sich dieses vorher anzusehen. Außerdem werden die ausgedruckten Quelltexte immer in der gleichen Art und Weise formatiert (davon ausgenommen ist das Seitenzahlenformat, das Sie mit Hilfe der Schaltfläche Einrichten im Dialogfeld Drucken kontrollieren können).
Im nächsten Schritt wurden die Grundlagen vorgestellt, die für das Schreiben einer einfachen Prozedur notwendig sind, wenn diese nicht mit dem Makrorecorder aufgezeichnet werden soll. Danach haben Sie gelernt, wie eine Prozedur aufgebaut sein muß, damit sie Nachrichten auf dem Bildschirm anzeigen kann. In diesem Zusammenhang wurden mögliche Syntaxfehler und Laufzeitfehler beschrieben, auf die Sie während des Schreibens, der Bearbeitung und der Ausführung einer Prozedur treffen können. Zum Schluß haben Sie erfahren, wie man Module ausdrucken kann.
A Ja, die Farben, die der VB-Editor den verschieden Teilen eines Quelltextes zuweist, können geändert werden. Öffnen Sie das Dialogfeld Optionen, indem Sie den Befehl Optionen aus dem Menü Extras wählen. Wählen Sie dann die Registrierkarte Editorformat, um die Optionen für die Formatierung anzuzeigen. Klicken Sie in der Liste Code-Farben auf das Element, dessen Farbe Sie ändern wollen. Wählen Sie dann die Farbe für den Text aus den Drop-down-Listenfeldern Vordergrund und Hintergrund. Sie sollten jedoch nur die Farbe für den Vordergrund verändern und für den Hintergrund Automatisch wählen. Bestätigen Sie Ihre Farbwahl mit OK.
F Mir gefallen die Schriftart und Schriftgröße nicht, mit der die Quelltexte meines Moduls auf dem Bildschirm angezeigt werden. Ist es möglich die Schriftart und Schriftgröße des Quelltextes zu ändern?
A Ja, Sie können die Schriftart und Schriftgröße des Quelltextes verändern. Wie die Farboptionen finden Sie auch die Optionen für die Schriftart und Schriftgröße auf der Registrierkarte Editorformat im Dialogfeld Optionen. Wählen Sie die Schrift aus dem Drop-down-Listenfeld Schriftart und die Schriftgröße aus dem Dropdown-Listenfeld Grösse. Unten rechts in der Registrierkarte Editorformat erscheint daraufhin ein Musterbeispiel des neu formatierten Textes.
F Ist es notwendig, daß ich die Anweisungen im Quelltext genauso einrücke wie der Makrorecorder?
A Nein, Sie müssen den Quelltext nicht genauso einrücken wie der Makrorecorder; im Grunde brauchen Sie die Anweisungen überhaupt nicht einzurücken.
Für VBA ist das Einrücken der Anweisungen von keinerlei Bedeutung. Das Einrücken von Anweisungen dient hauptsächlich der Formatierung und soll dem Benutzer das Lesen des Quelltextes erleichtern. Wenn Sie ein anderes als das hier vorgestellte Schema für das Einrücken bevorzugen, können Sie es problemlos verwenden. Wichtig ist jedoch, daß Sie bestimmte Anweisungen nach welchem Schema auch immer -- einrücken, damit es leichter ist, diese zu verstehen.
F Wann ist es notwendig, ein neues Modul für eine Prozedur einzufügen?
A Ein neues Modul für eine Prozedur sollen Sie immer dann eingefügen, wenn Sie eine neue Kategorie von Prozeduren erstellen, oder wenn die Speicherkapazität Ihres Moduls nahezu erschöpft ist. Ein Modul kann ungefähr 4000 Zeilen beinhalten.
F Wie kann die bei der Erstellung des Moduls verwendete Schrift für den Ausdruck geändert werden?
A Sie können zwar mit Hilfe des Dialogfelds Drucker einrichten, das Sie über die Schaltfläche Einrichten im Dialogfeld Drucken öffnen, das Druckformat festlegen (Hochformat oder Querformat), es ist jedoch nicht möglich, die bei der Erstellung des Moduls verwendete Schrift und Formatierung für das Drucken zu verändern. Module werden immer in der Schrift gedruckt, die Sie auch beim Schreiben verwendet haben. Das gleiche gilt für Formatierungen, wie z.B. eingerückte Zeilen und Leerzeilen. Wenn Sie aus irgendeinem Grund die Schrift oder die Formatierung einer Prozedur oder eines Moduls für den Ausdruck verändern müssen, wählen Sie den Befehl Kopieren im Menü Bearbeiten, um den Modultext in die Zwischenablage zu kopieren. Kopieren Sie den Text dann in ein Textverarbeitungsprogramm (wie z.B. Microsoft Word Pad oder Microsoft Word) und ändern Sie die Schriftmerkmale und die Formatierungen in dem Modul mit Hilfe dieses Programms.
1: Sub ExcelVBAHelp() 2: ' Diese Prozedur öffnet die Excel-VBA-Hilfe 3: ' beim Hilfethema Microsoft Excel-Objekte 4: ' 5: Application.Help "VBAXL8.HLP" 6: End Sub
1: Sub WordHelpIndex() 2: 'Diese Prozedur öffnet die Word-Hilfe 3: 'beim Inhaltsverzeichnis 4: ' 5 Application.Help wdHelpIndex 6 End Sub
1: Sub Broken () 2: MsgBox Und noch eine Nachricht 3: End Sub