VBA Programmieren mit Visual Basic for Applications

Transcription

VBA Programmieren mit Visual Basic for Applications
2
easy
know-how
VBA
Programmieren mit
Visual Basic for Applications
“Investition in Wissen zahlt die besten Zinsen”
Benjamin Franklin
easy2know-how – Erhard Closs, Ihr PC-Coach, Tel.: 089/ 910 72 813, Fax.: 089/ 910 72 813
 Dieses Werk ist urheberrechtlich geschützt.
Alle dadurch begründeten Rechte, insbesondere der Nachdruck, die Übersetzung, die Wiedergabe auf
photomechanischen oder ähnlichen Wegen, die Speicherung und Verarbeitung mit Hilfe der EDV
bleiben auch auszugsweise dem Urheber vorbehalten.
Visual Basic for Applications
3
Inhaltsverzeichnis
Modul 1: Einführung in die Programmierung .................................................................................................. 5
Grundlagen von VBA ....................................................................................................................................... 6
Projekte, Eigenschaften und Module ............................................................................................................... 7
Planung eines Programms ................................................................................................................................ 8
Eingeben eines Programms .............................................................................................................................. 9
Unterschiede zwischen Anweisungen und Funktionen .................................................................................. 10
Prozeduren ..................................................................................................................................................... 11
Befehle zur Ein- und Ausgabe ........................................................................................................................ 12
Ausführen und Testen eines Programms ......................................................................................................... 13
Einzelschrittmodus ......................................................................................................................................... 14
Zusammenfassen und Vertiefen: Einführung in die Programmierung ............................................................. 15
-
Modul 2: Variablen und Konstanten ..............................................................................................................
Konstanten, Variablen, Datenfelder ...............................................................................................................
Variablen .......................................................................................................................................................
Datentypen ....................................................................................................................................................
Gültigkeitsbereiche von Variablen ................................................................................................................
Gültigkeitsdauer ............................................................................................................................................
Konstanten .....................................................................................................................................................
Datenfelder ....................................................................................................................................................
Zusammenfassen und Vertiefen: Variablen und Konstanten ..........................................................................
16
17
18
19
20
21
22
23
24
Modul 3: Prozeduren und Funktionen ...........................................................................................................
Parameter ......................................................................................................................................................
Referenzübergabe oder Wertübergabe? .........................................................................................................
Funktionen .....................................................................................................................................................
Gültigkeitsbereiche von Prozeduren ..............................................................................................................
Exkurs: Optionale Parameter .........................................................................................................................
Exkurs: Parameterfelder .................................................................................................................................
Zusammenfassen und Vertiefen: Prozeduren und Funktionen ........................................................................
25
26
27
28
29
30
31
32
Modul 4: Objekte und Auflistungen ..............................................................................................................
Überblick.......................................................................................................................................................
Zugriff auf Elemente einer Auflistung ............................................................................................................
Arbeiten mit Eigenschaften ............................................................................................................................
Arbeiten mit Methoden ..................................................................................................................................
Objektkatalog ...............................................................................................................................................
With-Anweisung ............................................................................................................................................
Exkurs: Klassenmodule ..................................................................................................................................
Exkurs: Benutzerdefinierte Eigenschaften und Methoden ..............................................................................
Zusammenfassen und Vertiefen: Objekte und Auflistungen ..........................................................................
33
34
35
36
37
38
39
40
41
42
Modul 5: Programmstrukturen .......................................................................................................................
Überblick über Schleifen ...............................................................................................................................
For – Next .....................................................................................................................................................
For Each – Next .............................................................................................................................................
Do – Loop ......................................................................................................................................................
Überblick über Verzweigungen .....................................................................................................................
If – Then – Else ..............................................................................................................................................
Select Case – End Select ...............................................................................................................................
Zusammenfassen und Vertiefen: Programmstrukturen ....................................................................................
43
44
45
46
47
48
49
50
51
Visual Basic for Applications
4
Modul 6: Fehlerbehandlung .........................................................................................................................
Benutzerdefinierte Fehlerroutinen ................................................................................................................
Exkurs: Auslösen von benutzerdefinierten Fehlern ......................................................................................
Hierarchie der Fehlerroutinen ......................................................................................................................
Zusammenfassen und Vertiefen: Fehlerbehandlung ....................................................................................
52
53
54
55
56
Modul 7: Formulare und Dialogfelder .........................................................................................................
Erstellen von Dialogfeldern ..........................................................................................................................
Hinzufügen von Steuerelementen ................................................................................................................
Ändern der Größe und Position von Steuerelementen .................................................................................
Eigenschaften von Steuerelementen ............................................................................................................
Ereignisprozeduren .......................................................................................................................................
Anzeigen von Dialogfeldern.........................................................................................................................
Zusammenfassen und Vertiefen: Formulare und Dialogfelder ....................................................................
57
58
59
60
61
62
63
64
Modul 8: Datenaustausch mit anderen Anwendungen ................................................................................
Zugriff auf Objekte anderer Anwendungen ..................................................................................................
Exkurs: Datenaustausch mit DDE ................................................................................................................
Exkurs: Zugriff auf Windows-Funktionen .....................................................................................................
Zusammenfassen und Vertiefen: Datenaustausch mit anderen Anwendungen ...........................................
65
66
67
68
69
Wichtige Tastenkombinationen ................................................................................................................... 70
Index ............................................................................................................................................................. 71
Visual Basic for Applications
5
Modul 1
Einführung in die Programmierung
Was ist VBA? Was ist der Unterschied zu Visual Basic? Wofür kann man VBA einsetzen? Wie kann
ich ein Projekt erstellen? Wie kann ich Eigenschaften von Dokumenten einstellen? Was ist ein Modul?
Wie kann ich ein Modul erstellen? Wie plane ich ein Programm? Wie kann ich ein Programm eingeben,
ausführen und testen? Was ist der Unterschied zwischen Anweisungen und Funktionen? Wie erstelle
ich Prozeduren? Wie kann ich mit dem Benutzer kommunizieren?
In diesem Modul werden folgende Themen behandelt:
• Grundlagen von VBA
• Projekte, Eigenschaften und Module
• Planung eines Programms
• Eingeben eines Programms
• Unterschiede zwischen Anweisungen und Funktionen
• Prozeduren
• Befehle zur Ein- und Ausgabe
• Ausführen und Testen eines Programms
• Einzelschrittmodus
Lernziel
Der Anwender lernt die Bedienung des Visual Basic-Editors und die Grundlagen der Programmierung kennen.
Voraussetzungen
Grundlagenkenntnisse im Umgang mit Word-Dokumenten, Excel-Arbeitsmappen und/oder Powerpoint-Präsentationen und im Umgang mit einer Textverarbeitung.
Visual Basic for Applications
6
Grundlagen von VBA
Was ist VBA? Was sind die Unterschiede zu Visual Basic und VB-Skript? Wie rufe ich den VBA-Editor
auf?
-
Abb.1: Aufruf des Visual Basic-Editors
VBA (Visual Basic für Applikationen) stellt eine Sprachfamilie von Microsoft dar, die
u.a. Visual Basic für Word, Excel, Powerpoint und Access umfaßt. Daneben unterstützen noch einige andere Microsoft-Anwendungen VBA, z.B. Project und Visual C++.
Eine Untermenge von VBA stellt VB-Skript dar, das derzeit nur vom Internet Explorer
und von Outlook unterstützt wird. Die Möglichkeiten von VB-Skript sind sehr
eingeschränkt.
Abgrenzung
VBA ist eine Untermenge von Visual Basic. Im Unterschied zu Visual Basic kann man
mit VBA keine eigenständigen Anwendungen kreieren, sondern ist immer auf eine der
Office-Anwendungen angewiesen. Einzig zu Access gibt es optional ein RuntimeModul, das es ermöglicht, Access Datenbanken samt dem VBA-Code auszuführen,
ohne daß Access installiert ist. Visual Basic und VBA haben viele Gemeinsamkeiten.
Anwendungen
VBA ersetzt die verschiedenen Makro-Sprachen der Microsoft Office-Anwendungen.
Der Vorteil ist, daß der Programmierer nur mehr eine Programmiersprache erlernen
muß, um alle Office-Anwendungen zu programmieren. Mit VBA ist es nicht nur
möglich, die aktuelle Anwendung zu beeinflussen, sondern man kann auch fremde
Anwendungen, soweit diese das erlauben, „fernsteuern”. Alle Anwendungen, die
sogenannte OLE-Automatisierungs-Server darstellen, können mit VBA gesteuert werden.
OLE-Anwendungen
In Word, Excel und Powerpoint können Sie den Visual Basic-Editor auf die gleiche Weise aufrufen. Hierzu wählen
Sie Menü Extras–Makro–Visual-Basic Editor. Access hat in bezug auf VBA eine Sonderstellung.
Visual Basic for Applications
7
Projekte, Eigenschaften und Module
Was ist ein Projekt? Wie füge ich neue Module in ein Projekt ein? Wie kann ich Eigenschaften für
Dokumente festlegen?
-
Abb.2: Projekt-Explorer und Eigenschaftenfenster
In Visual Basic stellt ein Projekt normalerweise eine komplette Anwendung dar. In
VBA wird ein Projekt definiert durch ein Office-Dokument, wie z. B. ein WordDokument oder eine Excel-Arbeitsmappe. In einem Projekt werden gespeichert
Projekt
• das Dokument
• alle Makros, die mit diesem Dokument verbunden sind
• Benutzerformulare (Dialogboxen)
• Verweise auf andere Dokumente, Anwendungen, Vorlagen u. ä.
Die Makros werden in Modulen zusammengefaßt, die den Gültigkeitsbereich bestimmen.
Module
Alle geöffneten Projekte sowie deren Komponenten kann man im Projekt-Explorer
betrachten und verwalten. Diesen kann man mit Ansicht–Projekt-Explorer oder über
das Symbol Projekt-Explorer im Visual Basic-Editor ein- und ausblenden. Komponenten kann man löschen, indem man auf sie mit der rechten Maustaste klickt und den
Befehl Entfernen von <Komponenten-Name>... auswählt. Man kann auch den Befehl
Datei–Entfernen von <Komponenten-Name>... auswählen.
Projekt-Explorer
Die Eigenschaften zu einer Komponente werden im Eigenschaftenfenster angezeigt
und bearbeitet. Dieses wird mit Ansicht–Eigenschaften oder dem Symbol Eigenschaftenfenster ein- und ausgeblendet. Im Eigenschaftenfenster legt man z. B. den Namen von
Komponenten fest.
Eigenschaftenfenster
Ein neues Modul fügt man in das gerade ausgewählte Projekt mit dem Befehl Einfügen–Modul oder über
das Symbol Modul einfügen ein.
Visual Basic for Applications
8
Planung eines Programms
Was muß bei der Erstellung einer VBA-Anwendung beachtet werden? Wie kann ich ein größeres
Projekt planen?
-
Abb.3: Elemente eines Teilprogramms
Jeder in sich abgeschlossene Programmteil besteht aus 5 Elementen, die sorgfältig vor
der Implementierung geplant werden sollten:
Teilprogramme
1. Schnittstelle: Über die Schnittstelle (Interface) kommuniziert ein Programmteil mit
anderen Programmteilen. Nicht jeder Programmteil verfügt über eine solche
Schnittstelle.
Schnittstelle
2. Deklarationsteil: Hier werden Variablen und Datentypen deklariert, die im
Programmteil verwendet werden sollen.
Deklarationsteil
3. Eingabe: Jedes Programm benötigt Daten, die es verarbeiten kann. Diese Daten
können über die Schnittstelle kommen, vom Benutzer eingegeben werden, oder
aus anderen Datenquellen (z. B. Dokumente oder Datenbanken) extrahiert werden.
Eingabe
4. Verarbeitung: Die eingegebenen Daten werden mit Hilfe eines Algorithmus
(Lösungsweges) verarbeitet. Kompliziertere Algorithmen sollten verbal oder graphisch dargestellt werden. Zur graphischen Darstellung eignen sich u.a.
Struktogramme und Flußdiagramme.
Verarbeitung
5. Ausgabe: Die Ergebnisse der Verarbeitung können über die Schnittstelle, über
Benutzerschnittstellen (z.B. Dialogboxen) oder in andere Datenquellen (z.B.
Dokumente oder Datenbanken) ausgegeben werden.
Ausgabe
Bei großen Projekten sollte man vor der Implementierung Ist- und Soll-Analysen durchführen, um das Ziel des
Projektes klar zu definieren. Solche Projekte werden dann in viele kleinere Programmteile zerlegt.
Visual Basic for Applications
9
Eingeben eines Programms
Wo gebe ich meine Programme ein? Welche Möglichkeiten bietet der Visual Basic-Editor?
-
Abb.4: Visual Basic-Editor
Bevor man ein Programm eingeben kann, muß man ein Modul erzeugen. Jedes
Dokument hat bereits ein Standardmodul. Dieses kann angezeigt werden, indem man
das Dokument im Projekt-Explorer auswählt und den Menübefehl Ansicht–Code
ausführt. Man kann aber auch einfach auf das Dokument doppelklicken. Ebenso
haben benutzerdefinierte Formulare bereits ein eigenes Modul. Diese Module sollten
jedoch nur für Ereignisprozeduren und direkt damit in Zusammenhang stehende
Prozeduren und Funktionen verwendet werden. Man sollte daher den Großteil des
VBA-Codes auf eigene Module verteilen.
Code-Ansicht
Den Programmcode kann man wie in einer Textverarbeitung eingeben. Jede Anweisung und jeder Befehl wird in eine neue Zeile geschrieben. Mit der TABULATOR-Taste
erfolgen Einrückungen, die den Programmcode übersichtlicher machen. Mit UMSCHALT + TABULATOR können Einrückungen zurückgenommen werden. Der
Programmcode kann ansonsten wie in einer Textverarbeitung üblich bearbeitet,
verschoben und kopiert werden. Im Menü Bearbeiten stehen zudem die Befehle
Suchen... und Ersetzen... zur Verfügung.
Eingeben des Codes
Das Apostroph (‘) markiert den dahinterstehenden Text als Kommentar.
Kommentare
Bei den meisten Schlüsselwörtern zeigt der Editor nach der Eingabe die Syntax der Parameter in Form eines
QuickTips an. Konstanten, Eigenschaften und Methoden zu Objekten können häufig aus automatisch aufklappenden Listen gewählt werden. Dabei kann man auch die ersten paar Buchstaben der Konstanten eintippen und den
Namen mit TABULATOR vervollständigen.
Visual Basic for Applications
10
Unterschiede zwischen Anweisungen und Funktionen
Was ist eine Anweisung? Was ist ein Befehl? Was ist eine Funktion?
-
Abb.5: Datenfluß zwischen Prozeduren und Funktionen
Anweisungen legen die grundsätzliche Programmstruktur fest, z.B. Deklarations-,
Schleifen- und Verzweigungsanweisungen, während Befehle die eigentliche Datenverarbeitung erledigen, z.B. Ein- und Ausgabebefehle. Daneben kann man auch
eigene Befehle definieren, die Prozeduren genannt werden.
Anweisungen
Hauptmerkmal von Befehlen ist, daß die Ausgabe entweder über die Benutzerschnittstelle (z.B. Dialogboxen) oder in eine andere Datenquelle (z.B. Dokumente, Datenbanken) erfolgt.
Befehle
Fast jedes Programm benötigt Berechnungen, um das gewünschte Ergebnis zu
erreichen. VBA unterstützt die Grundrechnungsarten und das Potenzieren. Daneben
gibt es eine Reihe eingebauter Funktionen, die kompliziertere Berechnungen durchführen.
Funktionen
Funktionen können nie als eigenständige Befehle im Programm stehen, sondern das
Ergebnis einer Funktion muß immer sofort von einer Anweisung oder einem Befehl
weiterverarbeitet werden. Z.B. liefert die Funktion Int(Zahl) den ganzzahligen Teil
einer Zahl. Das Ergebnis dieser Funktion wird aber weder gespeichert noch am
Bildschirm ausgegeben, sondern es wird direkt an das aufrufende Programm zurückgegeben. Int kann daher nur Teil einer Anweisung sein, die das Ergebnis weiterverarbeitet.
Verwendung von
Funktionen
Sowohl die meisten Befehle und Prozeduren als auch die meisten Funktionen benötigen Parameter. Sie dürfen
bei Prozeduren und Befehlen die Parameterniemals in Klammern schreiben, bei Funktionen müssen Sie sieimmer
in Klammern schreiben. Hat eine Funktion keine Parameter, müssen Sie leere Klammern anschließen, z. B.Date().
Visual Basic for Applications
11
Prozeduren
Was sind Prozeduren? Wie deklariere ich Prozeduren? Wie werden Prozeduren aufgerufen?
-
Abb.6: Einfügen einer Prozedur
Prozeduren sind das Grundgerüst eines jeden Projekts. Man unterscheidet allgemeine
Prozeduren und Ereignisprozeduren. Allgemeine Prozeduren ohne Parameter werden
auch Makros genannt und können von den Office-Programmen (mit Ausnahme von
Access) aus mit dem Menübefehl Extras–Makro–Makros direkt als Makros aufgerufen
werden. Ereignisprozeduren werden in der Regel automatisch beim Eintreten der
verschiedenen Ereignisse aufgerufen. Alle Prozeduren, also auch allgemeine Prozeduren mit Parametern, können von anderen Prozeduren oder Funktionen aus aufgerufen werden.
Prozeduren
Eine Prozedur ohne Parameter sieht folgendermaßen aus:
Public Sub Prozedurname ()
‘ Es folgen die Anweisungen
End Sub
Diese Deklaration kann aber auch über Menü Einfügen–Prozedur oder über das
Symbol Prozedur einfügen erfolgen. Im darauf folgenden Dialog ist der Name der
Prozedur einzugeben.
Die anderen Einstellungen in diesem Dialog betreffen den Typ, den Gültigkeitsbereich
der Prozedur und die Gültigkeitsdauer von Variablen. Die Standardeinstellungen
werden in den meisten Fällen sinnvoll sein.
Aufgerufen wird eine Prozedur von einer anderen Prozedur oder Funktion aus mit der
Anweisung Call Prozedurname.
Aufruf
Die Anweisung Call können Sie immer weglassen, wodurch Sie die Prozedur nur unter Angabe des Prozedurnamens aufrufen können. Sie können Prozeduren mit der Anweisung Exit Sub innerhalb des Modulkörpers
vorzeitig verlassen.
Visual Basic for Applications
12
Befehle zur Ein- und Ausgabe
Wie kann man Benutzereingaben entgegennehmen? Wie kann man Meldungen am Bildschirm
ausgeben?
-
Abb.7: Meldungsbox und Eingabebox
Der MsgBox-Befehl und die MsgBox-Funktion zeigen eine Meldungsbox mit einem
frei definierbaren Text und verschiedenen Schaltflächen an.
MsgBox
Die InputBox-Funktion fordert den Benutzer zur Eingabe eines Textes auf und gibt
diesen als Zeichenkette zurück.
InputBox
MsgBox Meldungstext, , Titeltext
Syntax
‘ Anweisung
MsgBox (Meldungstext, Buttons, Titeltext) ‘ Funktion
InputBox (Meldung, Titeltext, Vorgabe)
Meldungstext
Frei definierbarer Text, der in der Meldungsbox erscheinen soll.
Buttons
Eine Summe von Konstanten, die die Schaltflächen und das
Symbol in der Meldungsbox festlegen. (Optional, wenn nur die
Ok-Schaltfläche benötigt wird.)
Titeltext
Der Text, der in der Titelleiste der Meldungsbox erscheinen soll.
(Optional)
Vorgabe
Vorgabetext, der in der Eingabebox erscheinen soll.
Die MsgBox-Funktion gibt abhängig von der Schaltfläche, die der Benutzer angeklickt
hat, einen Wert zurück, der je nach Schaltflächen mit verschiedenen Konstanten
verglichen werden kann.
Parameter
Rückgabewert
Die InputBox-Funktion gibt den vom Benutzer eingegeben Text zurück. Klickt der
Benutzer auf Abbrechen, wird eine leere Zeichenkette zurückgegeben.
Zu Testzwecken können Sie Ausgaben für den Benutzer unsichtbar im Direktbereich bzw. Testfenster vornehmen. Dazu dient die Anweisung Debug.Print, die auch mit Debug.? abgekürzt werden kann. Nähere Informationen zu diesen Befehlen finden Sie in der Hilfe.
Visual Basic for Applications
13
Ausführen und Testen eines Programms
Wie kann ich Makros aufrufen? Wie zeige ich den Direktbereich an? Wie kann ich den Inhalt von
Variablen anzeigen?
-
Abb.8: Direktbereich, Lokalfenster, Überwachungsfenster
Allgemeine Prozeduren ohne Parameter werden auch Makros genannt und können
von den Office-Programmen (mit Ausnahme von Access) aus direkt als Makros
aufgerufen werden. Dazu dient der Menübefehl Extras–Makro–Makros.
Makros ausführen
Im Visual Basic-Editor stellt man den Cursor in die entsprechende Prozedur und wählt
aus dem Menü Ausführen–Sub/UserForm ausführen.
Prozeduren ausführen
Der Direktbereich stellt eine weitere Möglichkeit dar, Prozeduren und auch einzelne
Anweisungen und Befehle zu testen. Mit dem Befehl Ansicht–Direktbereich kann
man diesen ein- und ausblenden. Im Direktbereich gibt man einfach die Anweisung,
den Befehl oder den Prozedurnamen ein und drückt die EINGABETASTE. Hier können
auch Prozeduren mit Parametern und Funktionen getestet werden. Um den Inhalt von
Variablen oder das Ergebnis von Funktionen auszugeben, dient der Befehl Print bzw.
?. Z. B. gibt Print Int(3.5) als Ergebnis 3 zurück.
Direktbereich
Mit dem Befehl Ansicht–Lokal-Fenster wird ein Fenster angezeigt, das alle lokalen
Variablen der aktiven Prozedur mit deren Inhalt anzeigt. Der Befehl Ansicht–
Überwachungsfenster zeigt ein Fenster an, in dem man Überwachungsausdrücke
definieren kann, deren Ergebnis hier ständig angezeigt wird. Diese Ausdrücke
definiert man mit dem Befehl Testen–Überwachung hinzufügen....
Lokal-Fenster
Im Überwachungsfenster lassen sich auch Situationen definieren, bei denen das Programm gestoppt werden soll,
was bei der Fehlersuche hilfreich sein kann.
Visual Basic for Applications
14
Einzelschrittmodus
Wie kann ich die Anweisungen eines Programms einzeln ausführen? Welche Möglichkeiten bietet der
Einzelschrittmodus?
-
Abb.9: Symbolleiste Testen
Häufig muß man ein Programm im Einzelschrittmodus ausführen, um Fehler zu
finden. Dazu setzt man an entsprechender Stelle im Programm einen Haltepunkt. Das
Setzen und Löschen von Haltepunkten erfolgt durch einen Mausklick in den grauen
Bereich links neben der entsprechenden Zeile. Stoppt das Programm an diesem
Haltepunkt, stehen folgende Befehle zur Verfügung:
Haltepunkte
Testen–Einzelschritt
Führt die Anweisung aus und stoppt das Programm abermals.
Testen–Prozedurschrittt
Führt die Anweisung aus. Wird hierbei eine andere Prozedur aufgerufen, wird
diese nicht im Einzelschrittmodus ausgeführt.
Testen–Prozedur abschließen
Wurde mit Testen – Einzelschritt in eine andere Prozedur gesprungen, so führt
dieser Befehl die Prozedur ohne Pause aus und stoppt nach dem Rücksprung ins
aufrufende Programm.
Testen–Ausführen bis Cursor-Position
Führt das Programm bis zur Cursor-Position ohne Pause aus.
Ausführen–Fortsetzen
Führt das Programm ohne Pause bis zum nächsten Haltepunkt aus.
Diese Befehle findet man auch auf der Symbolleiste Testen.
Im Einzelschrittmodus kann man auch die Anweisung festlegen, die als nächstes ausgeführt werden soll, indem
man den gelben Pfeil im Code-Fenster zu einer anderen Anweisung zieht.
Visual Basic for Applications
15
Zusammenfassen und Vertiefen
Modul 1: Einführung in die Programmierung
1. Visual Basic für Applikationen stellt eine einheitliche Makro-Sprache für alle
Microsoft-Anwendungen dar, die auch anwendungsübergreifendes Programmieren erlaubt. Der Visual Basic Editor wird in Word, Excel und Powerpoint über den
Menübefehl Extras–Makro–Visual Basic Editor aufgerufen.
Grundlagen
Seite 6
2. Im Projekt-Explorer können die Komponenten eines Projektes verwaltet werden,
im Eigenschaften-Fenster können die Eigenschaften der Objekte bestimmt werden. Der Programm-Code wird in Module eingegeben, die sich über den Menübefehl Einfügen–Modul erzeugen lassen.
Projekte, Eigenschaften,
Module
Seite 7
3. Jeder abgeschlossene Programmteil besteht aus einer Schnittstelle, einem
Deklarationsteil, dem Eingabeteil, dem Verarbeitungsteil und dem Ausgabeteil.
Besonders bei größeren Programmierprojekten ist eine sorgfältige Planung wichtig.
Planung
Seite 8
4. Beim Eingeben des Programm-Codes ist es wichtig, daß jeder Befehl in eine eigene
Zeile geschrieben wird. Kommentare werden mit einem Apostroph (‘) gekennzeichnet.
Eingabe
Seite 9
5. Bei Anweisungen und Befehlen sind die Parameter nie in Klammern zu schreiben,
bei Prozeduren hingegen schon. Eine Prozedur kann nie alleine aufgerufen
werden, sondern das Ergebnis muß immer in irgendeiner Weise weiterverarbeitet
werden.
Anweisungen– Funktionen
Seite 10
6. Prozeduren werden immer mit dem SchlüsselwortSub eingeleitet und mit End Sub
beendet. Eine Prozedur kann einfach durch Angabe des Prozedurnamens aufgerufen werden.
Prozeduren
Seite 11
7. Mit den Funktionen MsgBox und InputBox können Meldungen an den Benutzer
weitergeleitet werden bzw. Eingaben entgegengenommen werden. MitDebug.Print
kann man Testausgaben im Direktbereich vornehmen.
Ein- und Ausgabe
Seite 12
8. Im Direktbereich können Programme und Befehle getestet werden. Über die
Befehle Ansicht–Lokal-Fenster und Ansicht–Überwachungsfenster lassen sich
zwei Fenster einblenden, die zur Überwachung der Inhalte von Variablen eingesetzt werden.
Testen, Ausführen
Seite 13
9. Im Einzelschrittmodus können fehlerhafte Programme leichter korrigiert werden.
Dabei wird nach der Ausführung eines jeden Befehls gestoppt, und man kann die
Inhalte von Variablen kontrollieren.
Einzelschrittmodus
Seite 14
-
Visual Basic for Applications
16
Modul 2
Variablen und Konstanten
Wie kann ich Daten in Programmen zwischenspeichern? Wie kann ich häufig verwendete Werte
vordefinieren? Wie kann ich auf eine Reihe gleichartiger Daten am einfachsten zugreifen? Welche
Datentypen gibt es in VBA? Wie lange sind Variablen gültig? Wo kann ich überall Variablen verwenden?
In diesem Modul werden folgende Themen behandelt:
• Konstanten, Variablen, Datenfelder
• Deklaration von Variablen
• Datentypen
• Gültigkeitsbereich
• Gültigkeitsdauer
• Konstanten
• Datenfelder
Lernziel
Der Anwender erlernt den Unterschied zwischen Variablen und Konstanten sowie deren Verwendung im
Programm.
Voraussetzungen
Kenntnis über die Bedienung des Visual Basic-Editors. Kenntnisse über den Unterschied zwischen Projekten,
Modulen und Prozeduren sowie über die Deklaration eigener Prozeduren.
Visual Basic for Applications
17
Konstanten, Variablen, Datenfelder
Wo kann ich Konstanten und Variablen einsetzen? Wie verwende ich Datenfelder?
-
Abb.10: Variablen und Datenfelder
Fast jedes Programm benötigt Speicherplätze, wo es Werte für eine spätere Verwendung zwischenspeichern kann. Man kann sich diese Speicherplätze wie Schubladen
vorstellen. Jede Schublade stellt eine Variable dar. Die Beschriftung der Schublade ist
der Variablenname. In dieser Schublade kann man Werte verschiedenen Typs
(Zahlen, Texte, Objekte) speichern. Der Inhalt dieser Variablen läßt sich jederzeit
abrufen und verändern.
Variablen
In vielen Programmen gibt es neben diesen variablen Werten auch eine Anzahl von
konstanten Werten. Manchmal ist es sinnvoll, auch diesen konstanten Werten Namen
zuzuweisen. Man spricht dann von Konstanten. In Visual Basic sind bereits zahlreiche
Konstanten vordefiniert. Ihr Name beginnt immer mit vb. Außerdem gibt es spezielle
Word-Konstanten, die alle mit wd beginnen, spezielle Excel-Konstanten, die alle mit
xl beginnen und spezielle Access-Konstanten, die mit ac beginnen. Konstanten
werden einmal definiert und dürfen über die gesamte Laufzeit eines Programms nicht
verändert werden.
Konstanten
Oft will man auf eine größere Anzahl gleichartiger Daten unter dem gleichen
Variablennamen zugreifen. Der jeweilige Wert soll dabei meist durch den Inhalt einer
anderen Variablen ausgewählt werden. Man kann sich das als Schubladenschrank mit
einem bestimmten Namen vorstellen. Die einzelnen Laden werden dabei durch
Nummern gekennzeichnet. In Programmiersprachen spricht man dabei von Datenfeldern oder Arrays.
Datenfelder
Egal ob Sie Variablen, Konstanten oder Datenfelder definieren. Sie können sie alle überall an Stelle von jedem
anderen Wert verwenden.
Visual Basic for Applications
18
Variablen
Wie deklariere ich Variablen? Welche Datentypen können Variablen haben? Wie kann ich den Inhalt
von Variablen verändern?
-
Abb.11: Verwendung von Variablen
Normalerweise müssen Variablen in Basic nicht deklariert werden. Sie werden dann
bei der ersten Verwendung automatisch mit dem Datentyp Variant angelegt. Es
empfiehlt sich jedoch aus Gründen der Fehlervermeidung und Ablaufgeschwindigkeit
Variablen vorher zu deklarieren. Man kann die Deklaration von Variablen erzwingen,
indem man im Modulkopf (der Bereich am Beginn eines Moduls, bevor die erste
Prozedur deklariert wird) die Anweisung Option Explicit eingibt. Wenn man mit
dem Befehl Extras–Optionen im Register Editor die Option Variablendeklaration
erforderlich aktiviert, wird diese Anweisung in allen neuen Modulen automatisch
eingefügt.
Deklaration
Variablen können mit verschiedenen Anweisungen entweder im Modulkopf oder
innerhalb einer Prozedur oder Funktion deklariert werden. Dazu verwendet man die
Syntax Dim
Variablenname As
Datentyp. Statt Dim können auch die
Schlüsselwörter Private, Public und Static verwendet werden, die der Variablen einen
unterschiedlichen Gültigkeitsbereich bzw. eine unterschiedliche Gültigkeitsdauer
geben.
Schlüsselwörter
Der Wert einer Variablen wird mit der Syntax Variablenname = Wert zugewiesen. Um einer Variablen vom Typ Object oder eines Untertyps von Object ein Objekt
zuzuordnen, muß die Anweisung Set verwendet werden.
Wertzuweisung
strT = "Text"
Set objO = ActiveWorkbook
Die Schlüsselwörter Dim und Private haben die gleiche Wirkung und können sowohl innerhalb von Prozeduren
als auch im Modulkopf verwendet werden. Public kann nur im Modulkopf verwendet werden, Static nur
innerhalb von Prozeduren.
Visual Basic for Applications
19
Datentypen
Welche Datentypen können Variablen haben? Welche Besonderheiten haben Objekt- und VariantVariablen?
-
Abb.12: Übersicht über Datentypen
VBA unterstützt folgende Datentypen:
Boolean
Datentypen
2 Bytes, True (-1) oder False (0)
Byte/Integer/Long 1/2/4 Byte, Ganzzahl, 0 bis 255/-32.768 bis +32.767/2.147.483.648 bis +2.147.483.647
Single/Double
4/8 Bytes, Fließkommazahl, 7/15 Dezimalstellen
Currency
8 Bytes, Festkommazahl, 4 Nachkommastellen
Decimal
14 Bytes, Fließkommazahl, 29 Dezimalstellen
Date
8 Bytes, Datum/Uhrzeit
String
10 Bytes + Länge der Zeichenkette, Zeichenketten, bis zu ca. 2
Milliarden Zeichen Länge
Object
4 Bytes, Verweis auf ein beliebiges Objekt
Variant
numerisch: 16 Bytes, String: 22 Bytes + Länge der Zeichenkette,
variabler Universal-Datentyp
Variant kann auch die speziellen Werte Empty (nicht initialisiert), Null und Error
annehmen. Diese Werte können mit den Funktionen IsEmpty(), IsNull() und IsError()
abgefragt werden. Einen Error-Wert erzeugt man mit der Funktion CVError(Fehlernummer). Der eigentliche Datentyp einer Variant-Variable kann mit der Funktion
VarType() ermittelt werden.
Variant
Eine Objektvariable enthält nie das Objekt selbst, sondern nur einen Verweis auf das
Objekt. Mit Set Objektvariable = Nothing wird der Verweis gelöscht.
Objekt
Der Datentyp Object sollte möglichst nicht verwendet werden, statt dessen eine Objektklasse, wie z. B.
Document, Workbook, Recordset oder Form. Variant ist der Standarddatentyp bei Variablen, deren Typ nicht
angegeben wird.
Visual Basic for Applications
20
Gültigkeitsbereiche von Variablen
In welchen Programmteilen ist der Name einer Variablen gültig? Wie kann ich auf Variablen in anderen
Modulen zugreifen?
-
Abb.13: Sichtbarkeit von Variablen
Für Variablen gibt es die drei Gültigkeitsbereiche Prozedurebene, Modulebene und
Projektebene. Es ist immer empfehlenswert, den Gültigkeitsbereich einer Variablen
soweit wie möglich einzuschränken.
Gültigkeitsbereich
Variablen werden auf Prozedurebene mit den Anweisungen Dim, Private oder Static
deklariert, wobei diese Anweisungen innerhalb der jeweiligen Prozedur, also zwischen Sub und End Sub stehen müssen. Diese Variablen sind nur innerhalb der
Prozedur sichtbar.
Prozedurebene
Um Variablen für alle Prozeduren im gleichen Modul sichtbar zu machen, verwendet
man die Anweisungen Dim oder Private im Modulkopf. Um Variablen im gesamten
Projekt sichtbar zu machen, verwendet man die Anweisung Public im Modulkopf.
Modulebene/Projektebene
Haben Variablen mit unterschiedlichen Gültigkeitsbereichen oder in unterschiedlichen Modulen den gleichen Namen, hat die Variable mit dem kleineren (näherliegenden) Gültigkeitsbereich den Vorrang. Wenn also auf Prozedurebene eine Variable mit
gleichem Namen wie eine andere auf Modulebene deklariert wird, so ist innerhalb der
Prozedur nur die lokale Variable sichtbar. Ebenso haben bei Namensgleichheit
Variablen im gleichen Modul Vorrang vor Variablen in anderen Modulen.
Namenskonflikte
Sie können auf jeden Fall auf Variablen und Prozeduren in anderen und im eigenen Modul zugreifen, indem Sie
die Syntax Modulname.Variablenname bzw. Modulname.Prozedurname verwenden.
Visual Basic for Applications
21
Gültigkeitsdauer
Wie lange bleibt der Inhalt von Variablen erhalten? Kann man die Gültigkeitsdauer auch verändern?
-
Abb.14: Beispiel einer statischen Variablen
Bei VBA bleibt der Inhalt von Variablen nur solange gültig, bis eines der folgenden
Ereignisse eintritt:
Gültigkeitsbereiche
• Erneutes Kompilieren des Projektes
• Projekt wird neu initialisiert
• Deklaration der Variablen wird verändert
• Projekt wird geschlossen
Variablen, die innerhalb einer Prozedur mit dem SchlüsselwortDim deklariert wurden
sind noch kürzer gültig, nämlich nur bis die Prozedur beendet wird, sie also mit Exit
Sub oder End Sub verlassen wird. Der Speicherplatz solcher Variablen wird daraufhin
freigegeben. Beim nächsten Aufruf dieser Prozedur werden die Variablen erneut im
Speicher angelegt und neu intialisiert.
Lokale Variablen
Will man den Inhalt von Variablen auf Prozedurebene zwischen zwei Aufrufen der
gleichen Prozedur erhalten, so sind diese mit dem Schlüsselwort Static an Stelle von
Dim zu deklarieren. Das Schlüsselwort Static kann nicht im Modulkopf verwendet
werden, da alle Variablen auf Modulebene auf jeden Fall statisch sind.
Static
Sollen alle Variablen einer Prozedur automatisch statisch sein, so kann man das Schlüsselwort Static auch im
Prozedurkopf verwenden: Public Static Sub Prozedurname (). Die Variablen können dann sowohl
mit Dim als auch mit Static deklariert werden, verhalten sich aber in jedem Fall so, als ob Sie sie mit Static
deklarieren würden.
Visual Basic for Applications
22
Konstanten
Wie kann ich Konstanten deklarieren? Wann verwendet man Konstanten?
-
Abb.15: Deklaration von Konstanten
Konstanten werden immer dann verwendet, wenn ein Wert mehrmals im Programm
vorkommt, aber nirgends verändert werden darf.
Verwendung
In Visual Basic sind bereits zahlreiche Konstanten vordefiniert. Ihr Name beginnt
immer mit vb. Außerdem gibt es spezielle Word-Konstanten, die alle mit wd beginnen,
spezielle Excel-Konstanten, die alle mit xl beginnen und spezielle Access-Konstanten,
die mit ac beginnen.
Vordefinierte Konstanten
Konstanten werden mit dem Schlüsselwort Const deklariert. Die Syntax dafür lautet:
Deklaration
Const Konstantenname = Ausdruck
Als Ausdruck kann ein einfacher Wert, wie z. B. eine Zahl oder ein Text zwischen
doppelten Anführungszeichen, dienen. Man kann aber auch Berechnungen an dieser
Stelle durchführen lassen. In diesen Berechnungen dürfen allerdings keine Variablen
und Funktionen vorkommen. Es dürfen aber andere Konstanten darin vorkommen.
Ausdruck
Die Konstantendeklaration erfolgt normalerweise im Modulkopf. Mit den SchlüsselwörternPublic undPrivate vorConst kann ihr Gültigkeitsbereich definiert werden(siehe
Kapitel „Gültigkeitsbereich”). Es ist außerdem möglich, mit dem Schlüsselwort As
einen genauen Datentyp anzugeben und mehrere Konstanten in einer Zeile zu
definieren.
Gültigkeitsbereich/Datentyp
Konstanten können überall im Programm anstelle des Wertes vorkommen. Sie dürfen aber nicht während der
Laufzeit des Programms verändert werden.
Visual Basic for Applications
23
Datenfelder
Wie kann man Datenfelder deklarieren? Kann man die Größe von Datenfeldern zur Laufzeit verändern?
-
Abb.16: Beispiel zur Verwendung von Datenfeldern
Man unterscheidet statische und dynamische Datenfelder. Dynamische Datenfelder
können ihre Größe im Programmablauf ändern.
Statisch/Dynamisch
Ein statisches Datenfeld wird mit der Anweisung Dim/Private/Static/Public
Variablenname (niedrigste Indexnummer To höchste Indexnummer)
As Datentyp deklariert. Die Grenzen für die Indexnummern müssen konstant sein.
Werden die niedrigste Indexnummer und das Schlüsselwort To weggelassen, beginnt
der Index mit 0 zu zählen.
Statische Datenfelder
Um ein dynamisches Datenfeld zu deklarieren, läßt man den Wert in Klammern weg,
z. B. Dim A() As String. Ein solches Datenfeld muß vor der ersten Verwendung
nochmals dimensioniert werden. Das geschieht mit der Anweisung ReDim, die auch
mehrmals im Programm erfolgen kann. Dabei geht der Inhalt des Datenfeldes
verloren, was mit dem Schlüsselwort Preserve hinter ReDim verhindert werden kann.
Dynamische Datenfelder
Die einzelnen Elemente eines Datenfeldes spricht man über deren Indexnummern in
Klammern an. Anstelle einer konstanten Zahl kann diese Indexnummer auch durch
eine andere Variable dargestellt werden, z. B.: A(i).
Indexnummern
Bei der Deklaration mehrdimensionaler Datenfelder gibt man die Größe jeder
Dimension separat, durch Komma getrennt an. Beim Zugriff auf Elemente eines
mehrdimensionalen Datenfeldes muß die Position in jeder Dimension angegeben
werden, z. B. A(0, 2, 5).
Mehrdimensionale
Datenfelder
Um die Ober- und Untergrenzen für den Index zu ermitteln, können Sie die Funktionen UBound() und LBound()
verwenden.
Visual Basic for Applications
24
Zusammenfassen und Vertiefen
Modul 2: Variablen und Konstanten
1. Variablen sind eines der wichtigsten Programmierelemente. In ihnen können
Werte für eine spätere Verwendung zwischengespeichert werden.
Variablen
Seite 17
2. Konstanten werden mit dem Schlüsselwort Const deklariert. Sie dürfen über die
gesamte Laufzeit des Programms nicht verändert werden.
Konstanten
Seite 18
3. Variablen werden mit den Schlüsselwörtern Dim, Private, Public oder Static
deklariert. Objektvariablen lassen sich nur mit dem Schlüsselwort Set auf ein
bestimmtes Objekt setzen.
Deklaration von Variablen
Seite 19
4. Die am häufigsten verwendeten Datentypen sind Integer, Long, Single, Double,
String, Variant und Objektklassen. Der Datentyp Variant kann einige besondere
Werte, wie Empty oder Null, enthalten.
Datentypen
Seite 20
5. Je nachdem, an welcher Stelle und mit welchem Schlüsselwort man Variablen
deklariert, haben sie unterschiedliche Gültigkeitsbereiche. Die möglichen Gültigkeitsbereiche sind Projektebene, Modulebene und Prozedurebene.
Gültigkeitsbereich
Seite 21
6. Variablen auf Prozedurebene bleiben normalerweise nur so lange erhalten, wie
die Prozedur läuft, es sei denn, sie werden mit dem Schlüsselwort Static deklariert.
Variablen auf Modul- und Projektebene bleiben über die gesamte Laufzeit des
Projekts erhalten.
Gültigkeitsdauer
Seite 22-23
7. Mit Hilfe von Datenfeldern ist es möglich, mehrere Variablen unter dem gleichen
Namen, aber mit unterschiedlichen Indexnummern anzusprechen. Es gibt statische Datenfelder, deren Größe sich über die gesamte Laufzeit des Programms
nicht verändert, und dynamische Datenfelder, deren Größe sich jederzeit ändern
kann.
Datenfelder
Seite 24
-
Visual Basic for Applications
25
Modul 3
Prozeduren und Funktionen
Wie kann ich Daten an Prozeduren übermitteln? Wie kann ich eigene Funktionen programmieren? Wie
können Prozeduren und Funktionen Ergebnisse zurückgeben? Was sind Parameter? Was versteht
man unter Call By Reference? Was versteht man unter Call by Value? Wie lassen sich optionale
Parameter deklarieren?
In diesem Modul werden folgende Themen behandelt:
• Parameter
• Referenzübergabe oder Wertübergabe?
• Funktionen
• Gültigkeitsbereiche
• Optionale Parameter
• Parameterfelder
Lernziel
Der Anwender lernt Möglichkeiten kennen, Eingabewerte an Prozeduren und Funktionen zu übergeben, und
Ergebnisse zurückzugeben.
Voraussetzungen
Deklaration von Prozeduren und Variablen, Kenntnisse über Datentypen, Gültigkeitsbereiche, Gültigkeitsdauer und
Datenfelder.
Visual Basic for Applications
26
Parameter
Wie deklariere ich Parameter? Wie kann ich an eine Prozedur Eingabewerte übergeben?
-
Abb.17: Übergabe von Parametern
Durch die Deklaration von Parametern steht eine klar definierte Schnittstelle für die
Eingabewerte einer Prozedur zur Verfügung. Der Nachteil ist, daß Prozeduren mit
Parametern nicht mehr als Makros, sondern nur mehr von anderen Prozeduren oder
Funktionen aus aufgerufen werden können. Sie stellen sozusagen benutzerdefinierte
Befehle dar.
Schnittstelle
Um eine Prozedur mit Parametern zu deklarieren, schreibt man in die Klammern im
Prozedurkopf den Namen des Parameters, gefolgt vom Schlüsselwort As und einem
Datentyp. Mehrere Parameter werden durch Komma getrennt. Wird das Schlüsselwort As und der Datentyp weggelassen, erhält der Parameter den Datentyp Variant.
Beispiele:
Deklaration
Public Sub A (Par1 As Integer, Par2 As String)
Public Sub B (Par3)
Im zweiten Beispiel bekommt Par3 den Datentyp Variant. Beim Aufruf dieser
Prozeduren sind die Parameter durch Werte, Konstanten oder Variablen des gleichen
oder eines kompatiblen Datentyps zu ersetzen, z. B.:
Aufruf
A 20, "Text"
B #01.01.97#
Die übergebenen Parameter können innerhalb der Prozedur wie Variablen unter
Angabe des Parameternamens verwendet werden.
Verwendung
Prozeduren mit Parametern können nicht als Makros eingesetzt werden.
Für Parameter stehen alle Datentypen zur Verfügung, die Sie auch für Variablen verwenden können.
Visual Basic for Applications
27
Referenzübergabe oder Wertübergabe?
Was ist der Unterschied zwischen Call by Reference und Call by Value?
-
Abb.18: Unterschied Referenzübergabe – Wertübergabe
Parameter können an Prozeduren über Referenz und über den Wert übergeben
werden. Der Unterschied zwischen den beiden Übergabearten wirkt sich nur bei der
Übergabe einer Variablen als Parameter aus.
Parameter übergeben
Bei der Referenzübergabe wird lediglich die Adresse der Variablen übergeben. Die
Prozedur kann somit die übergebene Variable selbst verändern, was eine Möglichkeit
darstellt, Ergebnisse an die aufrufende Prozedur zurückzugeben, aber auch eine
zusätzliche Fehlerquelle ist.
Referenzübergabe
Bei der Wertübergabe wird hingegen eine Kopie des Inhaltes der Variablen erzeugt
und diese Kopie übergeben. Die Prozedur kann somit die übergebene Variable selbst
nicht verändern. Änderungen wirken sich auf die aufrufende Prozedur in keiner Weise
aus, da der Inhalt der Parametervariablen nach Ende der Prozedur verloren geht.
Wertübergabe
Der Aufruf erfolgt bei einer Referenzübergabe. Referenzübergabe ist die Standardeinstellung.
Standard
Bei der Deklaration einer Prozedur definiert man auch, wie die Parameter standardmäßig übergeben werden. Das geschieht mit den Schlüsselwörtern ByRef und ByVal
vor dem Parameternamen, z. B.: Public Sub P (ByRef A As Integer, ByVal
B As Byte).
ByRef / ByVal
Beim Aufruf der Prozedur kann man aber diese Voreinstellung ändern, z. B.:P ByVal
intA, ByRef bytB, wobei intA nun als Wert übergeben wird, während bytB als
Referenz übergeben wird.
Aufruf
Die Übergabe über Referenz bringt nur dann Geschwindigkeitsvorteile, wenn die Parametervariable nicht zu
Beginn der Prozedur in eine lokale Variable kopiert werden muß, um sie vor Veränderungen zu schützen.
Visual Basic for Applications
28
Funktionen
Wie kann ich eigene Funktionen definieren? Wie werden eigene Funktionen aufgerufen?
-
Abb.19: Rückgabe des Ergebnisses
Eigene Funktionen werden wie Prozeduren deklariert. Man ersetzt jedoch das
Schlüsselwort Sub durchFunction und schreibt ans Ende der DeklarationAs Datentyp,
um den Datentyp des Rückgabewertes zu definieren.
Deklaration
Parameter können wie bei Prozeduren deklariert werden. Zusätzlich wird automatisch eine Variable deklariert, die den Namen der Funktion und den in der Kopfzeile
angegebenen Datentyp erhält. Dieser Variablen weist man das Ergebnis der Funktion
zu. Der Inhalt dieser Variablen wird als Ergebnis an die aufrufende Prozedur
zurückgegeben. Ähnlich wie Prozeduren können auch Funktionen innerhalb des
Funktionskörpers mit der Anweisung Exit Function vorzeitig abgebrochen werden.
Beispiel einer Funktion:
Parameter
Public Function Wurzel (dblZahl As Double, dblExponent _
As Double) As Double
Wurzel = Zahl ^ (1 / Exponent)
End Function
Das Ergebnis einer Funktion muß man sofort weiterverarbeiten. Typische Funktionsaufrufe sind z. B.: W = Wurzel (2, 2) oder Debug.Print Wurzel (2, 2) oder
MsgBox Wurzel (2, 2). In Excel können benutzerdefinierte öffentliche Funktionen auch in Tabellenblättern, in Access in Abfragen, Formularen und Berichten
verwendet werden.
Aufruf
Die Parameter von Funktionen stehen im Gegensatz zu jenen der Prozeduren normalerweise immer in Klammern.
Besitzt eine Funktion keine Parameter, müssen die Klammern trotzdem geschrieben werden, z. B. MsgBox
Gestern ().
Visual Basic for Applications
29
Gültigkeitsbereiche von Prozeduren
Gibt es bei Prozeduren und Funktionen verschiedene Gültigkeitsbereiche? Wie kann ich diese
einsetzen?
-
Abb.20: Gültigkeitsbereich bei Prozeduren
Um eine Prozedur auf Modulebene zu deklarieren, schreibt man in den Prozedurkopf
das Schlüsselwort Private Sub bzw. bei Funktionen Private Function.
Private
Private Prozeduren können nicht als Makros aufgerufen werden. Private Funktionen
können nicht in Excel-Tabellenblättern und in Access weder in Abfragen oder
Formularen noch in Berichten verwendet werden. Private Prozeduren und Funktionen
können nur innerhalb des Moduls, in dem sie deklariert wurden, aufgerufen werden.
Private Prozeduren
Um eine Prozedur auf Projektebene zu deklarieren, schreibt man in den Prozedurkopf
das SchlüsselwortPublic Sub bzw. bei FunktionenPublic Function. Public ist Standard
bei VBA, kann also auch weggelassen werden.
Public
Öffentliche Prozeduren können, wenn sie keine Parameter verlangen, als Makros in
Word, Excel und Powerpoint aufgerufen werden. Öffentliche Funktionen können in
Excel-Tabellenblättern und in Access in Abfragen, Formularen und Berichten verwendet werden. Öffentliche Prozeduren und Funktionen können im ganzen Projekt
aufgerufen werden.
Öffentliche Prozeduren
Bei Namensgleichheit beim Aufruf zwischen einer Prozedur im eigenen Modul und
einer in einem fremden Modul, hat jene im eigenen Modul den Vorrang. Um auf
Prozeduren und Funktionen in einem fremden Modul zuzugreifen, schreibt man
Modulname.Prozedurname.
Namenskonflikte
Meistens werden Sie Prozeduren und Funktionen mit Public deklarieren. Einzig Ereignisprozeduren sind meist
private Prozeduren.
Visual Basic for Applications
30
Exkurs: Optionale Parameter
Wie kann ich optionale Parameter deklarieren? Wie kann ich überprüfen, ob ein optionaler Parameter
übergeben wurde?
-
Abb.21: Wurzelfunktion
Bei vielen eingebauten Befehlen und Funktionen sind manche Parameter optional,
wie z. B. bei den Befehlen MsgBox und InputBox.
Optionale Parameter
In eigenen Prozeduren und Funktionen kann man diesen Mechanismus ebenfalls
nachbilden. Dazu deklariert man einen oder mehrere Parameter mit dem Schlüsselwort Optional als optionale Parameter. Beispiele:
Optimal
Public Sub S1 (Optional P1 As Integer)
Public Sub S2 (P1 As Integer, Optional ByVal P2, Optional
ByRef P3)
Das Schlüsselwort Optional steht also immer vor den Schlüsselwörtern ByVal und
ByRef. Außerdem müssen optionale Parameter immer am Schluß der Parameterliste
stehen. Nach dem ersten optionalen Parameter müssen alle folgenden Parameter
ebenfalls optional sein.
Syntax
Die beiden obigen Prozeduren können nach Ihrer Deklaration auf folgende Weise
aufgerufen werden:
Aufruf
S1
S1
S2
S2
S2
S2
20
intA
20, "Kunden"
30, , "Lieferanten"
40, "Kunden", "Lieferanten"
Die Funktion IsMissing (Parametername) überprüft auf fehlende Parameter.
IsMissing()
Achtung: Die Funktion IsMissing kann nur für Parameter vom Typ Variant eingesetzt werden. Daher verwendet
man für optionale Parameter immer nur den Datentyp Variant.
Visual Basic for Applications
31
Exkurs: Parameterfelder
Wie muß man eine Prozedur deklarieren, bei der die Anzahl der Parameter variabel ist? Wie benutzt
man Parameterfelder?
-
Abb.22: Beispiel zur Verwendung eines Parameterfeldes
In manchen Fällen benötigt man eine Liste von gleichartigen Parametern, wobei der
Programmierer nicht vorhersagen kann, wie viele Parameter übergeben werden
müssen.
Liste gleichartiger Parameter
Solche Parameterfelder werden durch dynamische Datenfelder dargestellt. Dazu
schreibt man vor dem Parameternamen im Prozedurkopf das SchlüsselwortParamArray.
Nach dem Parameternamen schreibt man eine öffnende und eine schließende
Klammer, z. B. ParamArray Liste().
Parameterfelder
Folgendes ist dabei zu beachten:
• In einer Parameterliste darf immer nur ein Parameterfeld enthalten sein.
• Das Parameterfeld muß der letzte Parameter in der Parameterliste sein.
• Parameterfelder müssen den Datentyp Variant haben.
• ParamArray darf nicht mit den Schlüsselwörtern Optional, ByVal und ByRef
kombiniert werden.
Verwendung
• Parameterfelder sind immer auch optional.
Auf die einzelnen Parameter eines Parameterfeldes greift man auf die gleiche Weise
zu, wie bei herkömmlichen Datenfeldern, also über die Indexnummer. Die Untergrenze von Parameterfeldern beträgt immer 0. Die Anzahl der Parameter im Parameterfeld kann mit der Funktion UBound(Parameterfeld) bestimmt werden. Ist diese Anzahl
kleiner als 0, enthält das Parameterfeld keine Parameter.
Aufruf
Beim Aufruf trennt man die Parameter des Parameterfeldes durch Kommas.
Zur Bearbeitung von Parameterfelder verwendet man praktisch immer eineFor – Next-Schleife. Diese und andere
Schleifen werden in einem späteren Modul behandelt.
Visual Basic for Applications
32
Zusammenfassen und Vertiefen
Modul 3: Prozeduren und Funktionen
1. In eigenen Prozeduren lassen sich Parameter deklarieren. Mit Hilfe von Parametern lassen sich über eine definierte Schnittstelle Daten an ein Unterprogramm
übergeben.
Parameter
Seite 26
2. Bei der Parameterübergabe über Referenz wird die Adresse der Variablen
übergeben, wodurch das Unterprogramm das Original der Variablen verändern
kann. Bei der Parameterübergabe über den Wert wird vorher eine Kopie der
Variablen erzeugt, wodurch das Unterprogramm das Original der Variablen nicht
verändern kann.
Referenz- / Wertübergabe
Seite 27
3. Funktionen werden mit dem Schlüsselwort Function deklariert. Die Definition des
Rückgabewertes erfolgt mit Hilfe einer Variablen, die den gleichen Namen wie
die Funktion trägt.
Funktionen
Seite 28
4. Mit den Schlüsselwörtern Public und Private läßt sich der Gültigkeitsbereich von
Prozeduren und Funktionen definieren. Es stehen die Gültigkeitsbereiche Projektebene und Modulebene zur Verfügung.
Gültigkeitsbereich von
Prozeduren
Seite 29
5. Mit dem Schlüsselwort Optional können Parameter deklariert werden, die nicht
angegeben werden müssen. Optionale Parameter stehen immer am Ende der
Parameterliste.
Optionale Parameter
Seite 30
6. Mit dem Schlüsselwort ParamArray lassen sich Parameterfelder deklarieren. Mit
Parameterfeldern kann man eine Reihe gleichartiger Parameter an eine Prozedur
oder Funktion übergeben.
Parameterfelder
Seite 31
-
Visual Basic for Applications
33
Modul 4
Objekte und Auflistungen
Was ist eine Klasse? Was ist ein Objekt? Was ist eine Auflistung? Wie kann ich auf Elemente einer
Auflistung zugreifen? Wie kann ich Eigenschaften verwenden? Wie kann ich Methoden auf Objekte
anwenden? Wie kann ich eigene Klassen schaffen? Wie kann ich feststellen, welche Objekte,
Eigenschaften und Methoden es gibt?
In diesem Modul werden folgende Themen behandelt:
• Überblick über Klassen, Objekte, Auflistungen, Eigenschaften und Methoden
• Zugriff auf Elemente einer Auflistung
• Arbeiten mit Eigenschaften
• Arbeiten mit Methoden
• Objektkatalog
• With-Anweisung
• Klassenmodule
• Benutzerdefinierte Eigenschaften und Methoden
Lernziel
Der Anwender lernt, mit Klassen, Objekten, Eigenschaften und Methoden umzugehen und eigene Klassen zu
erstellen.
Voraussetzungen
Umgang mit Variablen, Prozeduren und Funktionen.
Visual Basic for Applications
34
Überblick
Was sind Objekte, Auflistungen und Klassen? Wozu dienen Eigenschaften und Methoden?
-
Abb.23: Objekte, Eigenschaften, Methoden, Auflistungen
Gleichartige Objekte mit gleichen Eigenschaften und Methoden werden in Klassen
eingeteilt. Jede Anwendung definiert eigene Klassen. Klassen können zur Deklaration
von Objektvariablen eingesetzt werden, z. B.:
Klassen
Dim frmKundenformular As Form.
Zu den meisten Klassen gibt es eine Auflistung, die alle bestehenden Objekte dieser
Klasse zusammenfaßt. Der Name der Auflistung entspricht meist dem Klassennamen
in der Mehrzahl, z. B. enthält die Auflistung Forms alle geöffneten Form-Objekte.
Auflistung
Jedes Objekt kann seinerseits Auflistungen, Eigenschaften und Methoden enthalten,
die durch seine Klasse bestimmt werden. Auflistungen enthalten untergeordnete
Objekte. Z. B. enthält jedes Form-Objekt (Formular) unter anderen eine ControlsAuflistung (Steuerelemente).
Objekt
Neben den Auflistungen besitzt jedes Objekt eine Reihe von Eigenschaften. Die
Einstellungen dieser Eigenschaften unterscheiden es von anderen Objekten der
gleichen Klasse. So besitzen z. B. die meisten Objekte eine Name-Eigenschaft, die den
Namen des Objekts angibt. Die meisten Eigenschaften von Objekten können ähnlich
wie Variablen gelesen und gesetzt werden.
Eigenschaft
Methoden können mit Funktionen und Prozeduren verglichen werden. Sie können auf
ein Objekt angewandt werden, das dann eine bestimmte Reaktion zeigt.
Methode
Die Wurzel des Objekt-Modells ist in jeder Anwendung das Objekt Application. Sie brauchen es aber nie
anzugeben.
Visual Basic for Applications
35
Zugriff auf Elemente einer Auflistung
Wie kann ich auf einzelne Elemente einer Auflistung zugreifen? Wie kann ich auf Objekte zugreifen,
deren Namen ich nicht kenne?
-
Abb.24: Übersicht über verschiedene Zugriffsmöglichkeiten
Auf Objekte greift man meist dadurch zu, daß man es als Teil einer Auflistung
anspricht. Dazu hat man drei Möglichkeiten:
Objektname bei
Programmierung bekannt
1. Man kennt den Namen des Objektes zum Zeitpunkt der Programmierung, er ist
also konstant. Dann schreibt man:Objekt.Auflistung![Objektname]. Objekt ist das
übergeordnete Objekt, das die Auflistung enthält. Handelt es sich hierbei um das
Application-Objekt, kann es inklusive Punkt weggelassen werden. Beispiel:
Application.Forms!Kunden entspricht Forms!Kunden. Handelt es sich
um die sogenannte Standard-Auflistung, kann man sie weglassen. Workbooks![Telefonkosten.xls]!Worksheets!Prognose entspricht z. B.:
Workbooks![Telefonkosten.xls]!Prognose.
2. Man kennt den Namen des Objektes erst zur Laufzeit, er steht also in einer StringVariable. Dann schreibt man grundsätzlich: Objekt.Auflistung(Stringvariable). Z. B.: Forms(strFormularname) oder Workbooks(strDateiname).
Objektname beim Ablauf
bekannt
Objektname unbekannt
3. Man kennt den Namen des Objektes nicht, sondern will auf ein Objekt über seine
Position in der Auflistung zugreifen. Man schreibt: Objekt.Auflistung(Index). Die
meisten Auflistungen beginnen bei 0 zu zählen. Z. B. ergibt Forms(0).Name das
erste geöffnete Formular. Statt der Indexnummer kann auch eine numerische
Variable stehen.
Die eckigen Klammern um den Objektnamen können weggelassen werden, wenn
der Name keine Sonder- oder Leerzeichen enthält. Um festzustellen, wie viele
Objekte eine Auflistung enthält, haben fast alle Auflistungen die Nur-Lese-Eigenschaft Count, z. B. Forms.Count.
Visual Basic for Applications
36
Arbeiten mit Eigenschaften
Wie kann ich Eigenschaften setzen? Wie kann ich auf Eigenschaften zugreifen? Welche Arten von
Eigenschaften gibt es?
-
Abb.25: Verwendung von Eigenschaften
Eigenschaften werden ähnlich wie Variablen verwendet. Die meisten Eigenschaften
von Objekten sind Lese-/Schreib-Eigenschaften. Ein Beispiel für so eine Lese-/SchreibEigenschaft, die fast jedes Objekt besitzt, ist die Eigenschaft Name, die den Namen
des Objekts bestimmt. Es gibt auch Nur-Lese-Eigenschaften. Z. B. besitzen fast alle
Auflistungsobjekte die Eigenschaft Count. Ihr Wert kann nur durch das Hinzufügen
und Löschen von Objekten aus der Auflistung verändert werden. Bei manchen
Objekten (z. B. Access-Formularen) gibt es Eigenschaften, die nur gesetzt werden
können, wenn das Objekt in einem bestimmten Modus (z. B. Entwurfs-Modus)
geöffnet wird.
Arten von Eigenschaften
Eigenschaften haben ebenso wie Variablen einen fixen Datentyp. Manche Eigenschaften stellen wiederum Objekte dar. Z. B. haben Range-Objekte (Bereich in Word
oder Excel) die Eigenschaft Font, die ein Font-Objekt zurückliefert, das seinerseits
wieder Eigenschaften wie z. B. Size hat.
Datentyp
In jedem Fall werden Eigenschaften genauso behandelt wie Variablen. Die Syntax für
das Setzen von Eigenschaften lautet: Objekt.Eigenschaft = Wert. Ist die
Eigenschaft ihrerseits ein Objekt, lautet die Syntax natürlich: Set Objekt.Eigenschaft = Objektverweis.
Wertzuweisung
Zum Lese-Zugriff auf normale Eigenschaften schreibt man: Variable = Objekt.Eigenschaft. Bei Eigenschaften, die Objekte darstellen, schreibt man: Set
Objektvariable = Objekt.Eigenschaft.
Lesen
Das Objekt, dessen Eigenschaft Sie verwenden wollen, kann natürlich seinerseits eine Eigenschaft eines Objektes
sein, das wiederum seinerseits meist in einer Auflistung enthalten ist, z. B. Workbooks![Umsatz.xls]!Soll.Range(„A1:Z1“).Font.Size = 14.
Visual Basic for Applications
37
Arbeiten mit Methoden
Wie kann ich Methoden auf Objekte anwenden? Welche Arten von Methoden gibt es?
-
Abb.26: Beispiel zu Methoden
Man unterscheidet Prozedurmethoden und Funktionsmethoden. Funktionsmethoden
arbeiten ähnlich wie normale Funktionen und liefern einen Wert oder ein Objekt
zurück. Prozedurmethoden arbeiten hingegen ähnlich wie Prozeduren und liefern
keinen Wert zurück.
Unterscheidung
Prozedurmethoden werden folgendermaßen angewandt: Objekt.Methode. Danach können noch Parameter angeführt sein, die diese Methode benötigt. Die Syntax
dafür ist identisch zu normalen Prozeduren.
Prozedurmethoden
Bei Funktionsmethoden muß der Rückgabewert ähnlich wie bei Funktionen sofort
weiterverarbeitet werden. Der Aufruf erfolgt daher wie folgt: Variable =
Objekt.Methode(). Wie bei Funktionen muß unbedingt das leere Klammernpaar
folgen. Benötigt die Methode Parameter, sind diese in die runden Klammern zu
schreiben. Der zurückgelieferte Wert steht anschließend in der angegebenen Variablen. Wird ein Objekt zurückgegeben, wie z. B. bei der Methode OpenRecordset in
Access, lautet die Syntax natürlich:Set Objektvariable = Objekt.Methode().
Funktionsmethoden
Manche Methoden verlangen keine Parameter. Statt dessen müssen vorher bestimmte Eigenschaften des Objektes
korrekt gesetzt werden. Nähere Informationen zu den Methoden und ihren Parametern finden Sie in der Hilfe der
jeweiligen Anwendung.
Visual Basic for Applications
38
Objektkatalog
Wie finde ich heraus, welche Objekte, Eigenschaften und Methoden eine Anwendung besitzt? Wie
bekomme ich Hilfe zum Objektmodell?
-
Abb.27: Objektkatalog
Da kein Programmierer die kompletten Objektmodelle aller Anwendungen auswendig können kann, müssen die Anwendungen ihrerseits einen sogenannten Objektkatalog bereitstellen, der sich im Visual Basic-Editor mit dem Menübefehl Ansicht –
Objektkatalog oder der Taste F2 ein- und ausblenden läßt. Sie können auch das
Symbol Objektkatalog verwenden.
Anzeigen
Im Objektkatalog-Fenster ist zunächst links oben im Listenfeld die Bibliothek zu
wählen, deren Objektkatalog betrachtet werden soll. In der linken Fensterhälfte wählt
man die Klasse oder Auflistung, deren Eigenschaften, Methoden und Auflistungen man
betrachten möchte. In der rechten Hälfte erscheinen diese dann. Im unteren Teil des
Fensters erscheint die Definition des gewählten Elements und Querverweise auf die
übergeordneten Objekte. Mit der Taste F1 erhält man die Hilfe zu diesem Element.
Objektkatalog-Fenster
Meist stehen die Bibliothek der jeweiligen Anwendung, die Bibliothek des aktuellen
Projekts, die VBA-Bibliothek, die MSForms-Bibliothek und die Office-Bibliothek zur
Verfügung.
Bibliotheken
Weiters ist auch immer die Bibliothek der aktiven Anwendung geladen, z. B. Word
oder Excel. Je nach Anwendung können auch zusätzliche Bibliotheken erscheinen.
Der Objektkatalog besitzt auch eine Suchfunktion für Elemente im Objekt-Modell.
Visual Basic for Applications
39
With-Anweisung
Wie kann ich den Zugriff auf Objekte beschleunigen? Wie kann ich Schreibarbeit beim Zugriff auf
Objekte sparen?
-
Abb.28: Access-Formular in Dialog umwandeln
Eine Möglichkeit, mehrere Zugriffe auf ein und dasselbe Objekt zu beschleunigen, ist,
das Objekt vorher einer Objektvariablen zuzuordnen und anschließend nur mehr die
Objektvariable zu verwenden, um auf die Eigenschaften und Methoden des Objekts
zuzugreifen. Der Programmablauf wird aber beschleunigt und Tipp-Arbeit eingespart,
wenn man statt dessen das With-Konstrukt verwendet.
Wiederholte Objektzugriffe
Dieses wird mit der Anweisung With Objekt eingeleitet, wobei Objekt ein gültiger
Verweis auf ein Objekt sein muß, aber auch eine Objektvariable sein darf. Innerhalb
dieses With-Konstrukts schreibt man nun statt dem Objektverweis immer nur einen
führenden Punkt (.) oder ein führendes Rufzeichen (!), um auf die Eigenschaften,
Methoden und auf die Standard-Auflistung des Objektes zuzugreifen. Am Ende dieser
Konstruktion muß die Anweisung End With stehen, z. B.:
With
With ActiveSheet.Range("A1:Z1").Font
.Bold = True
.Italic = True
.Size = 14
End With
Natürlich kann man innerhalb von With und End With auch auf andere Objekte
zugreifen, muß aber dabei wie gewohnt die vollständige Syntax verwenden.
Zugriff auf andere Objekte
Die With-Konstruktion spart nicht nur Tipp-Arbeit, sondern beschleunigt auch den Programmablauf, da die
Objekt-Adresse von VBA nur einmal berechnet werden muß. Deshalb empfiehlt es sich, Schleifen, die immer auf
das gleiche Objekt zugreifen, mit With und End With zu ummanteln.
Visual Basic for Applications
40
Exkurs: Klassenmodule
Wie kann ich eigene Klassen erstellen? Wie kann ich neue Objekte aus meinen Klassen erzeugen?
-
Abb.29: Erzeugen neuer Objekte einer Klasse
Bei der Programmierung ist man nicht auf die fertigen Klassen beschränkt. Um eine
eigene Klasse zu definieren, erstellt man ein neues Klassenmodul. Das geschieht mit
dem Menübefehl Einfügen – Klassenmodul. Man kann dazu auch das Symbol
Klassenmodul einfügen benutzen. Im Eigenschaftenfenster legt man mit der Eigenschaft Name den Namen der Klasse fest.
Einfügen
Die Eigenschaften und Methoden im Klassenmodul werden durch globale Variablen,
Eigenschaftsprozeduren und herkömmliche Prozeduren und Funktionen definiert.
Eigenschaften und
Methoden
Um ein neues Objekt der eigenen Klasse zu erzeugen, definiert man zunächst eine
Objektvariable mit dem Namen der Klasse als Typ:
Neue Objekte
Dim Objektvariable As Klasse
StattDim können natürlich auch die anderen Schlüsselwörter zur Variablendeklaration
verwendet werden.
Im zweiten Schritt erzeugt man nun ein neues Objekt der Klasse mit dem Schlüsselwort
New und weist es der Objektvariablen zu:
New
Set Objektvariable = New Klasse
Nun kann man über die Objektvariable auf alle Eigenschaften und Methoden der
eigenen Klasse zugreifen.
Die beiden Schritte der Erstellung kann man auch zu einem Befehl zusammenfassen: Dim Objektvariable
As New Klasse. Dies hat die gleiche Wirkung wie einzelne Dim- und Set-Anweisungen.
Visual Basic for Applications
41
Exkurs: Benutzerdefinierte Eigenschaften und Methoden
Wie kann ich meinen Klassenmodulen eigene Eigenschaften und Methoden hinzufügen? Was sind
Eigenschaftsprozeduren?
-
Abb.30: Beispiel eines Klassenmoduls
Am einfachsten fügt man durch das Deklarieren einer globalen Variablen im Modulkopf eine benutzerdefinierte Eigenschaft zu einer eigenen Klasse hinzu: Public
Eigenschaftsname As Datentyp. Es handelt sich dabei immer um eine Lese/
Schreib-Eigenschaft.
Öffentliche Variablen
Eigene Methoden sind nichts anderes als Funktionen und Prozeduren in der Klasse.
Diese können wie gewohnt deklariert werden. Der Aufruf erfolgt mit der gewohnten
Syntax Objekt.Methode(). Auch Parameter sind selbstverständlich möglich.
Methoden
Eigenschaftsprozeduren erlauben beim Setzen und Lesen von Eigenschaften weitere
Aktionen durchzuführen, wie z. B. Überprüfungen auf die Korrektheit der Einstellung
oder das Setzen von anderen Eigenschaften.
Property Set / Set
Bei Schreib-/Lese-Eigenschaften benötigt man jeweils zwei Prozeduren mit dem
gleichen Namen. Die erste dient zum Setzen der Eigenschaft und wird entweder mit
Public Property Let Eigenschaftsname (Wertparameter) für normale
Wert-Eigenschaften oder mit Public Property Set Eigenschaftsname
(Objektparameter) für Objekt-Eigenschaften deklariert. Der Parameter dieser
Prozeduren enthält zur Laufzeit den Wert, der dieser Eigenschaft zugewiesen werden
soll.
Property Get
Bei allen Eigenschaften benötigt man auf jeden Fall eine Funktion, die mit Public
Property Get Eigenschaftsname () As Datentyp deklariert wird. Diese spezielle
Funktion soll den Inhalt der Eigenschaft zurückgeben.
Nähere Informationen und Beispiele zu Property-Prozeduren erhalten Sie in der Hilfe unter dem Stichwort
Property.
Visual Basic for Applications
42
Zusammenfassen und Vertiefen
Modul 4: Objekte und Auflistungen
1. Mehrere gleichartige Objekte werden zu Klassen zusammengefaßt. Auflistungen
enthalten Objekte einer Klasse. Jedes Objekt besitzt Eigenschaften, die das Objekt
von anderen der gleichen Klasse unterscheidbar machen, und Methoden, die auf
das Objekt angewandt werden können.
Überblick
Seite 34
2. Auf Objekte wird im allgemeinen über eine Auflistung zugegriffen. Je nachdem, ob
der Objektname bekannt ist und zu welchem Zeitpunkt er bekannt ist, greift man
auf die Elemente von Auflistungen auf unterschiedliche Weise zu.
Zugriffsmöglichkeiten
Seite 35
3. Auf Eigenschaften eines Objektes wird ähnlich zugegriffen wie auf Variablen. Die
meisten Eigenschaften können sowohl gelesen als auch geschrieben werden, es
gibt aber auch Nur-Lese-Eigenschaften.
Eigenschaften
Seite 36
4. Methoden können auf Objekte angewandt werden. Man unterscheidet FunktionsMethoden, die ein Ergebnis zurückgeben, und Prozedur-Methoden, die ähnlich
wie Prozeduren aufgerufen werden.
Methoden
Seite 37
5. Im Objektkatalog können die Objekte und Klassen und deren Auflistungen,
Eigenschaften und Methoden betrachtet werden.
Objektkatalog
Seite 38
6. Mit Hilfe der With-Anweisung können Zugriffe auf immer das gleiche Objekt
beschleunigt und abgekürzt werden.
With
Seite 39
7. Mit dem Menübefehl Einfügen–Klassenmodul können eigene Klassen definiert
werden. Ein neues Objekt einer Klasse erzeugt man mit dem Schlüsselwort New.
Klassenmodule
Seite 40
8. Eigene Eigenschaften werden entweder über globale Variablen oder überPropertyProzeduren realisiert. Eigene Methoden werden über Prozeduren und Funktionen
in einem Klassenmodul definiert.
Eigene Methoden und
Eigenschaften
Seit 41
-
Visual Basic for Applications
43
Modul 5
Programmstrukturen
Wie kann ich Teile meines Programms wiederholt ausführen? Was ist eine Schleife? Welche Arten von
Schleifen gibt es? Was ist eine Verzweigung? Wie kann ich innerhalb eines Programms verzweigen?
Gibt es eine Mehrfach-Verzweigung? Wie kann ich alle Objekte einer Auflistung bearbeiten? Wie kann
ich alle Elemente eines Datenfeldes bearbeiten?
In diesem Modul werden folgende Themen behandelt:
• Überblick über Schleifen
• For – Next
• For Each – Next
• Do – Loop
• Überblick über Verzweigungen
• If – Then – Else
• Select Case – End Select
Lernziel
Der Anwender lernt Möglichkeiten kennen, Programmteile wiederholt ausführen zu lassen und innerhalb des
Programms zu verzweigen.
Voraussetzungen
Umgang mit Objekten und Auflistungen
Visual Basic for Applications
44
Überblick über Schleifen
Was ist eine Schleife? Welche Arten von Schleifen gibt es? Wie oft wird eine Schleife ausgeführt?
-
Abb.31: Elemente einer Schleife
Schleifen sind eines der wichtigsten Programmelemente. Mit ihnen ist es möglich,
Programmteile wiederholt ausführen zu lassen.
Wiederholungen
Jede Schleife besteht aus einem Schleifenkopf mit einer einleitenden Anweisung,
einem Schleifenkörper und einem Schleifenfuß mit einer abschließenden Anweisung.
Der Schleifenkörper enthält die Anweisungen, die innerhalb der Schleife wiederholt
ausgeführt werden sollen.
Elemente
Wie oft der Schleifenkörper wiederholt wird, hängt von einer Abbruchbedingung ab.
Jede Schleife braucht eine Abbruchbedingung. Wenn diese erfüllt wird, wird die
Schleife beendet.
Abbruchbedingung
Grundsätzlich unterscheidet man zwei Arten von Schleifen: Post- und Pre-CheckSchleifen.
Arten
Bei Pre-Check-Schleifen wird die Abbruchbedingung bereits überprüft, bevor der
Schleifenkörper das erste Mal ausgeführt wird, der Schleifenkörper kann also auch gar
nicht ausgeführt werden. Meist steht die Abbruchbedingung einer Pre-Check-Schleife
im Schleifenkopf.
Pre-Check
Bei Post-Check-Schleifen wird die Abbruchbedingung erst überprüft, nachdem der
Schleifenkörper das erste Mal ausgeführt wurde. Sie werden folglich zumindest
einmal ausgeführt. Meist steht die Abbruchbedingung bei einer Post-Check-Schleife
im Schleifenfuß.
Post-Check
Achten Sie beim Formulieren einer Schleife besonders auf die Abbruchbedingung. Sie ist eine der häufigsten
Quellen für Programmierfehler.
Visual Basic for Applications
45
For–Next
Wie kann ich eine Schleife mit einer fixen Anzahl von Wiederholungen programmieren?
-
Abb.32: Beispiel einer For–Next-Schleife
Die For–Next-Schleife ist eine sogenannte Zählschleife. Sie benötigt eine Zählervariable, die bei jedem Durchlauf um eine bestimmte Schrittweite erhöht oder
reduziert wird. Überschreitet sie ihren Endwert, wird die Schleife beendet. Merkmal
von Zählschleifen ist, daß die Anzahl der Wiederholungen vorher bekannt ist.
Zählschleife
Die Zählvariable einer For–Next-Schleife sollte vorher deklariert werden und hat
meist einen ganzzahligen Datentyp, wie z. B. Byte, Integer oder Long.
Zählvariable
So formulieren Sie eine For – Next-Schleife:
For–Next-Schleife
For Zählvariable = Startwert To Endwert Step _
Schrittweite
‘ Schleifenkörper
Next Zählvariable
Wird das Schlüsselwort Step und die Schrittweite weggelassen, beträgt sie immer 1.
Es sind auch negative Schrittweiten erlaubt. Beim Schlüsselwort Next kann der Name
der Zählvariablen auch weggelassen werden.
Step
Die For–Next-Schleife ist eine Pre-Check-Schleife, das bedeutet, daß der Schleifenkörper nicht ausgeführt wird, wenn der Endwert kleiner oder gleich (positive Schrittweite) bzw. größer oder gleich dem Startwert ist.
Pre-Check-Schleife
Soll die For-Next-Schleife noch vor Erreichen des Endwertes innerhalb des Schleifenkörpers verlassen werden, verwendet man die Anweisung Exit For.
Exit For
Beachten Sie: Der Inhalt der Zählvariablen ist am Ende der Schleife nicht gleich dem Endwert, sondern berechnet
sich aus der Formel: Endwert + Schrittweite.
Visual Basic for Applications
46
For Each–Next
Wie kann ich alle Objekte in einer Auflistung auf die gleiche Weise behandeln?
-
Abb.33: Beispiel einer For Each-Next-Schleife
Eine Variante der For–Next-Schleife stellt die For Each–Next-Schleife dar. Sie wird
ausschließlich zur Bearbeitung von Auflistungen eingesetzt.
Auflistung
An Stelle einer Zählervariable steht bei diesem Schleifentyp eine Objektvariable.
Diese verweist bei jedem Durchlauf des Schleifenkörpers auf das jeweils nächste
Objekt in der Auflistung, solange bis alle Objekte der Auflistung durchlaufen wurden.
Objektvariable
So formulieren Sie eine For Each–Next-Schleife:
Syntax
For Each Objektvariable In Auflistung
Schleifenkörper
Next Objektvariable
Innerhalb des Schleifenkörpers können dann die Eigenschaften und Methoden des
jeweiligen Objektes in der Auflistung wie gewohnt mit der Syntax Objektvariable.Eigenschaft oder Objektvariable.Methode verwendet werden.
Schleifenkörper
Auch bei der For Each–Next-Schleife kann die Objektvariable beim Schlüsselwort
Next weggelassen werden.
Auch dieser Schleifentyp ist eine Pre-Check-Schleife. Sind in der Auflistung keine
Objekte enthalten, wird der Schleifenkörper kein einziges Mal ausgeführt.
Pre-Check-Schleife
Wie die For–Next-Schleife kann auch diese Schleife mit der Anweisung Exit For
vorzeitig beendet werden.
Exit For
Beachten Sie: For Each–Next-Schleifen können nicht dazu verwendet werden, alle Objekte aus einer Auflistung
zu entfernen. Dazu muß die Auflistung rückwärts mit einer For–Next-Schleife durchlaufen werden.
Visual Basic for Applications
47
Do–Loop
Wie kann ich Schleifen mit allgemeiner Abbruchbedingung formulieren?
-
Abb.34: Beispiel von zwei verschachtelten Do-Loop-Schleifen
Die Do–Loop-Schleife ist der flexibelste Schleifentyp in VBA. Er erlaubt sowohl eine
positive als auch eine negative Formulierung der Abbruchbedingung. Diese Schleife
kann sowohl eine Pre- als auch eine Post-Check-Schleife sein. Allgemein sieht eine
Do-Loop-Schleife so aus:
Do-Loop-Schleife
Do [Abbruchbedingung]
Schleifenkörper
Loop [Abbruchbedingung]
Will man eine Pre-Check-Schleife formulieren, schreibt man die Abbruchbedingung
in den Schleifenkopf neben Do, bei einer Post-Check-Schleife in den Schleifenfuß
neben das Schlüsselwort Loop. Es ist nicht erlaubt, Abbruchbedingungen sowohl in
den Schleifenkopf als auch in den Schleifenfuß zu schreiben.
Abbruchbedingung
Die Abbruchbedingung wird entweder mit dem Schlüsselwort While oder mit Until
eingeleitet. Verwendet man While, wird die Schleife solange ausgeführt, solange die
Bedingung neben While erfüllt, also True ist.
While
Verwendet man Until, wird die Schleife ausgeführt, bis die Bedingung neben Until
erfüllt, also True ist. Jede Formulierung mit Until läßt sich in eine While-Formulierung
umkehren und umgekehrt.
Until
Ähnlich wie die anderen Schleifen läßt sich eineDo–Loop-Schleife mit der Anweisung
Exit Do auch innerhalb des Schleifenkörpers vorzeitig beenden.
Exit Do
Die Do–Loop-Schleife ersetzt die in manchen älteren Basic-Dialekten verwendete While–Wend-Schleife. Die
While–Wend-Schleife ist aber auch in VBA noch vorhanden.
Visual Basic for Applications
48
Überblick über Verzweigungen
Welche Arten von Verzweigungen gibt es? Wie formuliert man Bedingungen?
-
Abb.35: Arten von Verzweigungen
Bei einer Einfachverzweigung wird ein bestimmter Programmteil nur ausgeführt,
wenn eine Bedingung erfüllt ist. Bei einer Zweifachverzweigung gibt es zusätzlich
noch einen zweiten Zweig, der dann ausgeführt wird, wenn die Bedingung nicht
erfüllt ist. Mehrfachverzweigungen stellen hingegen eine unbegrenzte Anzahl von
verschiedenen Zweigen zur Verfügung.
Arten
Ein- und Zweifachverzweigungen erfolgen so wie Do – Loop-Schleifen auf der Basis
von sogenannten Booleschen Ausdrücken. Boolesche Ausdrücke haben als Ergebnis
immer entweder True oder False. Boolesche Ausdrücke können auch Variablen vom
Typ Boolean zugewiesen werden. Der einfachste Boolesche Ausdruck besteht aus
einer Variablen vom Typ Boolean.
Boolesche Ausdrücke
Die wichtigsten Vergleichsoperatoren in VBA sind: = (gleich), > (größer als), < (kleiner
als), >= (größer oder gleich), <= (kleiner oder gleich) und <> (ungleich). Um zu
überprüfen, ob zwei Objektvariablen auf das gleiche Objekt verweisen, verwendet
man den Operator Is.
Vergleichoperatoren
Mehrere Vergleiche lassen sich logisch mit den Operatoren And (logisches Und) und
Or (logisches Oder) verknüpfen. And hat dabei Vorrang vor Or, es sei denn, man
verwendet Klammern. Der Operator Not invertiert das Ergebnis, das heißt aus True
wird False und aus False wird True.
Logische Operatoren
Für weitere Informationen und Beispiele suchen Sie in der Hilfe nach dem Stichwort Vergleichsoperatoren.
Visual Basic for Applications
49
If–Then–Else
Wie kann ich Ein- und Zweifachverzweigungen in VBA realisieren? Können die Zweige auch mehrere
Befehle enthalten?
-
Abb.36: Rabatt in Prozentzahl umwandeln
Für Ein- und Zweifachverzweigungen steht in VBA die Anweisungsfolge If–Then–Else
zur Verfügung.
Einfachverzweigung
Wenn nur ein Befehl unter die Bedingung fällt, schreibt man:
If Boolescher Ausdruck Then Befehl oder Anweisung
Die zweite Möglichkeit kann auch dann eingesetzt werden, wenn mehrere Befehle
unter die Bedingung fallen.
If Boolescher Ausdruck Then
‘ Befehle oder Anweisungen
End If
In beiden Fällen werden die Befehle oder Anweisungen nur ausgeführt, wenn der
Boolesche Ausdruck True oder einen Wert ungleich 0 ergibt.
Bei Zweifachverzweigungen wird der zweite Zweig, der nur ausgeführt wird, wenn
der Boolesche Ausdruck False oder einen Wert gleich 0 ergibt, mit dem Schlüsselwort
Else eingeleitet:
If Boolescher Ausdruck Then Befehl/Anweisung Else _
Befehl/Anweisung
bzw.
If Boolescher Ausdruck Then
‘ Befehle oder Anweisungen
Else
‘ Befehle oder Anweisungen
End If
If–Then–Else-Anweisungen lassen sich natürlich auch schachteln.
Zweifachverzweigung
Visual Basic for Applications
50
Select Case–End Select
Wie kann ich in VBA eine Mehrfachverzweigung formulieren? Wie muß ich die Vergleichsausdrücke
formulieren?
-
Abb.37: Beispiel einer Select Case-Struktur
Mehrfachverzweigungen werden in VBA mit dem KonstruktSelect Case – Case – Case
Else – End gebildet, das etwa so aussieht:
Mehrfachverzweigung
Select Case Testausdruck
Syntax
Case Vergleich1
‘ Befehle oder Anweisungen
Case Vergleich2
‘ Befehle oder Anweisungen
...
Case Else
‘ Befehle oder Anweisungen
End Select
Der Testausdruck ist kein Boolescher Ausdruck, sondern ein herkömmlicher Ausdruck, z. B. eine numerische Variable. Bei den Vergleichsausdrücken gibt man einen
anderen Ausdruck an, normalerweise eine Zahl oder einen Text zwischen Anführungszeichen. Bei Gleichheit werden die Befehle oder Anweisungen ausgeführt. Ein
Bereich, in dem der Testausdruck liegen kann, wird mit dem Schlüsselwort To
angegeben, z. B. 1 To 10. Um die Vergleichsoperatoren >, <, >=, <= und <> zu
verwenden, muß das Schlüsselwort Is vorangestellt werden.
Testausdruck
Der Case Else-Zweig kann weggelassen werden. Dieser Zweig wird nur ausgeführt,
wenn kein einziger anderer Case-Zweig zutreffend war.
Case Else
Für weitere Informationen und Beispiele suchen Sie in der Hilfe unter dem Stichwort Select-Anweisung.
Visual Basic for Applications
51
Zusammenfassen und Vertiefen
Modul 5: Programmstrukturen
1. Schleifen bestehen aus einem Schleifenkopf, einem Schleifenkörper und einem
Schleifenfuß. Je nachdem, ob die Abbruchbedingung vor oder nach dem erstmaligen Durchlauf des Schleifenkörpers überprüft wird, unterscheidet man Pre- und
Post-Check-Schleifen.
Schleifen
Seite 44
2. For–Next-Schleifen werden dann eingesetzt, wenn die Anzahl der Wiederholungen vor Eintritt in die Schleife bekannt ist. For–Next-Schleifen sind Pre-CheckSchleifen.
For–Next
Seite 45
3. Zur Bearbeitung von Auflistungen werden For Each–Next-Schleifen eingesetzt.
Diese sind mit den For–Next-Schleifen eng verwandt.
For Each–Next
Seite 46
4. Für allgemeine Schleifen, die Pre- oder Post-Check-Schleifen sein können, verwendet man die Schlüsselwörter Do–Loop.
Do–Loop
Seite 47
5. Man unterscheidet Ein-, Zwei- und Mehrfachverzweigungen. Für die Bedingung
bei Ein- und Zweifachverzweigungen verwendet man Boolesche Ausdrücke, die
True oder False ergeben.
Verzweigungen
Seite 48
6. Ein – und Mehrfachverzweigungen werden mit If–Then – Else–End If erzeugt. Der
Else-Zweig ist dabei optional.
If–Then–Else
Seite 49
7. Für Mehrfachverzweigungen gibt es die Schlüsselwörter Select Case–Case–Case
Else–End Select. Auch hier ist der Case Else-Zweig optional.
Select Case
Seite 50
-
Visual Basic for Applications
52
Modul 6
Fehlerbehandlung
Wie kann ich auf Fehler überprüfen? Wie kann ich Laufzeitfehler abfangen? Wie kann ich eigene
Laufzeitfehler erzeugen? Wie werden Fehler behandelt?
In diesem Modul werden folgende Themen behandelt:
• Benutzerdefinierte Fehlerroutinen
• Auslösen von benutzerdefinierten Fehlern
• Hierarchie der Fehlerroutinen
Lernziel
Der Anwender lernt Möglichkeiten kennen, Fehler abzufangen und eigene Fehler zu definieren.
Voraussetzungen
Prozeduren, Verzweigungen, Objekte und Eigenschaften.
Visual Basic for Applications
53
Benutzerdefinierte Fehlerroutinen
Wie kann ich Laufzeitfehler abfangen? Wie werden Fehlerroutinen programmiert?
-
Abb.38: Beispiel einer Fehlerbehandlung
Um Laufzeitfehler abzufangen, muß man die Standard-Fehlerbehandlung mit der
Anweisung On Error Goto Sprungmarke durch benutzerdefinierte Fehlerroutinen ersetzen. Im Programm sieht das dann so aus:
On Error Goto
On Error Goto Sprungmarke
Anweisungen und Befehle
Exit Sub
‘ in Funktionen Exit Function
Sprungmarke:
‘ Anweisungen und Befehle zur Fehlerbehandlung
Resume
‘ oder Resume Next
Die Fehlerroutine wird mit Resume oder Resume Next abgeschlossen. Resume führt
den Befehl, der den Fehler verursacht hat, noch einmal aus, während Resume Next
mit dem nächsten Befehl weitermacht.
Resume
Um wieder die eingebaute Fehlerbehandlung zu aktivieren, verwendet man On Error
Goto 0.
On Error Goto 0
Das Objekt Err enthält u. a. die aktuelle Fehlernummer. Enthält Err den Wert 0, so ist
kein Fehler aufgetreten.
Err
Man kann auf die Fehlerroutine auch verzichten. Dazu schreibt man in das Programm
die Anweisung On Error Resume Next. Nun kann man nach jedem Befehl, der einen
Fehler hervorrufen könnte, Err.Number auf einen Wert ungleich 0 überprüfen, z. B.
If Err Then ...
On Error Resume Next
Um Fehlernummern schnell herauszufinden, erzeugen Sie den Fehler zunächst ohne aktivierte Fehlerroutine und
notieren die Fehlernummer, die VBA meldet.
Visual Basic for Applications
54
Exkurs: Auslösen von benutzerdefinierten Fehlern
Wie kann ich selbst Fehler auslösen? Was passiert mit meiner Prozedur, wenn ich selbst einen Fehler
auslöse?
-
Abb.39: Auslösen eines benutzerdefinierten Fehlers
Besonders in allgemein gültigen Prozeduren und Funktionen, die in vielen verschiedenen Projekten verwendet werden sollen, ist eine gute Fehlerprüfung notwendig.
Fehlerprüfung
Da solche Fehler meist vom Programmierer verursacht werden, der die Prozedur oder
Funktion falsch verwendet, sollte der Anwender damit nicht in Form eines MsgBoxBefehls behelligt werden. Ebensowenig ist es sinnvoll, die Fehlermeldung im Direktfenster mit Debug.Print auszugeben, da sie dort leicht übersehen werden kann. Statt
dessen sollte man wie bei eingebauten Befehlen einen Laufzeitfehler auslösen.
Laufzeitfehler
Dies geschieht mit derRaise-Methode des Err-Objekts. Die Syntax lautet:Err.Raise
Fehlernummer. Die Fehlernummer kann sowohl eine schon vorhandene sein, die
den Fehler gut beschreibt, als auch eine neue. Die Raise-Methode besitzt noch weitere
Parameter, z. B. für einen Hilfetext oder eine Fehlerbeschreibung. Für nähere
Informationen dazu suchen Sie in der Hilfe unter dem Stichwort Raise-Methode.
Raise
Eine Prozedur oder Funktion, die diese Raise-Methode auslöst, wird sofort beendet.
Die Fehlerbehandlung sollte in der aufrufenden Prozedur oder Funktion erfolgen.
Fehlerbehandlung
Für Informationen über die vordefinierten Fehlercodes aller auffangbaren Fehler suchen Sie in der Hilfe unter dem
Stichwort Auffangbare Fehler.
Visual Basic for Applications
55
Hierarchie der Fehlerroutinen
Was passiert, wenn innerhalb einer Fehlerroutine wieder ein Fehler auftritt? Was passiert, wenn keine
Fehlerroutine definiert wurde?
-
Abb.40: Programmablauf bei Fehlerbehandlung
Wenn man mit Hilfe der On Error Goto-Anweisung eine benutzerdefinierte Fehlerroutine aktiviert hat, darf innerhalb dieser Fehlerroutine kein weiterer Fehler ausgelöst
werden. In diesem Fall reagiert VBA so, als ob keine Fehlerroutine definiert wäre.
Fehler in Fehlerroutine
Ist in einer Prozedur oder Funktion keine Fehlerroutine definiert und es tritt ein Fehler
auf, wird in jener Prozedur oder Funktion nach einer aktivierten Fehlerroutine
gesucht. Wird eine solche gefunden, wird sie statt dessen ausgeführt. Nach Beendigung dieser Fehlerroutine springt VBA automatisch wieder in das Unterprogramm.
Wird in der aufrufenden Prozedur wieder keine Fehlerroutine gefunden, so versucht
es VBA eine Stufe höher usw.
Rücksprung zur Fehlerbehandlung
Ist in keiner Prozedur oder Funktion der Aufruf-Kette eine Fehlerroutine vorhanden,
so springt VBA wieder zurück zu jenem Befehl, der den Fehler verursacht hat und
stoppt mit einer Fehlermeldung.
Keine Fehlerroutine
Um nun Fehler in einer Fehlerroutine abzufangen, stehen zwei Möglichkeiten zur
Verfügung:
Fehler abfangen
• Behandlung des Fehlers in der Fehlerroutine der aufrufenden Prozedur oder
Funktion
• Aufruf einer Prozedur zur Behandlung des Fehlers
Der Aufruf einer Prozedur innerhalb einer Fehlerroutine hat den Vorteil, daß diese
Prozedur ihrerseits wieder eine eigene Fehlerroutine besitzen kann.
Für weitere Informationen und Beispiele suchen Sie in der Hilfe nach dem Stichwort On Error-Anweisung.
Visual Basic for Applications
56
Zusammenfassen und Vertiefen
Modul 6: Fehlerbehandlung
1. Benutzerdefinierte Fehlerroutinen werden mit On Error Goto definiert. Fehler
können aber auch mit On Error Resume Next abgefangen werden. In jedem Fall
enthält das Objekt Err die Fehlernummer des aufgetretenen Fehlers.
Definierte Fehlerroutinen
Seite 53
2. Mit Err.Raise können in Prozeduren benutzerdefinierte Fehler ausgelöst werden.
Auslösen
Seite 54
Fehlerbehandlung
Seite 55
3. Kann ein Fehler in einer Prozedur nicht durch eine Fehlerroutine behandelt
werden, wird versucht, den Fehler in der aufrufenden Prozedur durch eine
Fehlerroutine zu beheben. Wenn es nirgends Fehlerroutinen gibt, stoppt VBA mit
einer Standard-Fehlermeldung an der Stelle, die den Fehler ursprünglich verursacht hat.
-
Visual Basic for Applications
57
Modul 7
Formulare und Dialogfelder
Wie kann ich eigene Dialogfelder gestalten? Wie füge ich Steuerelemente zu Dialogfeldern hinzu? Wie
kann ich das Layout von Dialogfeldern verändern? Welche Eigenschaften haben Steuerelemente? Wie
kann ich die Eigenschaften von Steuerelementen verändern? Wie kann ich Dialogfelder aufrufen? Wie
lese ich Daten aus den Steuerelementen?
In diesem Modul werden folgende Themen behandelt:
• Erstellen von Dialogfeldern
• Hinzufügen von Steuerelementen
• Ändern der Größe und Position von Steuerelementen
• Eigenschaften von Steuerelementen
• Ereignisprozeduren
• Anzeigen von Dialogfeldern
Lernziel
Der Anwender lernt, eigene Dialogfelder zu gestalten und zu programmieren. Dieses Modul ist nicht auf Access
anzuwenden.
Voraussetzungen
Umgang mit Objekten, Auflistungen, Eigenschaften und Methoden.
Visual Basic for Applications
58
Erstellen von Dialogfeldern
Wie kann ich eigene Dialogfelder gestalten? Was sind die wichtigsten Eigenschaften von Dialogfeldern?
-
Abb.41: Erstellen eines UserForms
Für Dialogfelder in Word, Excel und Powerpoint steht die Bibliothek MSForms zur
Verfügung. In Access werden zu diesem Zweck die in Access integrierten Formulare
verwendet.
MS Forms
Um dem Projekt ein neues Dialogfeld hinzuzufügen, wählt man aus dem Menü des
Visual Basic-Editors Einfügen–UserForm. Man kann dazu auch das SymbolUserForm
einfügen verwenden. Es erscheint daraufhin ein leeres Formular und die Werkzeugsammlung. Die Werkzeugsammlung läßt sich mit dem MenübefehlAnsicht–Werkzeugsammlung oder dem Symbol Werkzeugsammlung ein- und ausblenden. Das neue
UserForm-Objekt erscheint im Projekt-Explorer in der Kategorie Formulare.
Einfügen eines UserForms
Im Eigenschaftenfenster lassen sich für das neue UserForm viele wichtige Eigenschaften festlegen. Die wichtigsten sind:
Eigenschaften
Name
der Name des UserForm-Objekts
Caption
die Beschriftung in der Titelleiste
SpecialEffect
3D-Effekt für das Formular
BackColor
Hintergrundfarbe
ForeColor
Vordergrundfarbe
BorderColor
Rahmenfarbe
BorderStyle
ob ein Rahmen angezeigt wird
Weitere Informationen und Beispiele zu benutzerdefinierten Dialogfeldern finden Sie in der Hilfe unter dem
Stichwort Erstellen von Dialogfeldern.
Visual Basic for Applications
59
Hinzufügen von Steuerelementen
Welche Steuerelemente stehen in UserForms zur Verfügung? Wie füge ich Steuerelemente in mein
UserForm ein?
-
Abb.42: Werkzeugsammlung
In UserForms stehen folgende Steuerelemente zur Verfügung:
Bezeichnungsfeld
Beschriftungen im Formular
Textfeld
Eingabefelder
Kombinationsfeld
Kombination aus Textfeld und Listenfeld
Listenfeld
Auswahl aus mehreren Elementen
Kontrollkästchen
Ja/Nein-Auswahl
Rahmen
Gruppierung von Optionsfeldern
Optionsfeld
Auswahl aus mehreren Optionen
Umschaltfläche
Ja/Nein-Auswahl
Steuerelemente
Befehlsschaltfläche Aufruf von Programmen
Register
Verschiedene Registerseiten in einem UserForm
Multiseiten
Zusätzliche Formularseiten in einem UserForm
Bildlaufleiste
Auswahl von Werten
Drehfeld
Auswahl von Werten
Anzeige
Grafik
Um ein Steuerelement dem Formular hinzuzufügen, ziehen Sie entweder das entsprechende Element aus der Werkzeugsammlung in das UserForm, oder wählen Sie das
Element in der Werkzeugsammlung aus und ziehen anschließend einen Rahmen im
UserForm auf, der die Größe des Steuerelements angibt.
Hinzufügen
Je nach Steuerelement stehen im Eigenschaftenfenster eine Reihe von unterschiedlichen Eigenschaften zur
Verfügung. Verwenden Sie diese Eigenschaften, um die Steuerelemente nach Ihren Bedürfnissen einzustellen.
Vor allem sollten Sie die Eigenschaft Name bei jedem Steuerelement sinnvoll belegen.
Visual Basic for Applications
60
Ändern der Größe und Position von Steuerelementen
Wie kann ich Steuerelemente auswählen? Wie kann ich Größe und Position von Steuerelementen
ändern?
-
Abb.43: Markierung eines Steuerelements
Um ein Steuerelement anzuwählen, klickt man es mit der Maus einmal an. Dabei ist
zu beachten, daß das Symbol Objekte auswählenin der Werkzeugsammlung aktiviert
ist. Man kann aber auch die TABULATOR-Taste so oft betätigen, bis das gewünschte
Steuerelement ausgewählt ist. Zum jeweils ausgewählten Steuerelement kann man im
Eigenschaften-Fenster verschiedene Einstellungen vornehmen.
Markieren
Um mehrere Steuerelemente auszuwählen, gibt es zwei Möglichkeiten: Entweder
man wählt das erste Steuerelement aus, hält dann die STRG-Taste gedrückt und wählt
dann alle anderen Steuerelemente aus. Oder man zieht mit der Maus einen Rahmen
um die Steuerelemente herum auf, die man auswählen will. Alle Steuerelemente, die
vom Rahmen berührt werden, werden ausgewählt.
Mehrfachmarkierung
Hat man ein oder mehrere Steuerelemente ausgewählt, kann man es verschieben,
indem man den Rahmen um das Steuerelement herum mit der Maus an eine andere
Position zieht. Waren dabei mehrere Steuerelemente ausgewählt, werden alle anderen Steuerelemente auch verschoben.
Verschieben
Um die Größe eines ausgewählten Steuerelements zu verändern, zieht man mit der
Maus einen der 8 Ziehpunkte auf die gewünschte Größe.
Größe ändern
Damit Sie bequem Steuerelemente sauber im Formular ausrichten können, stehen Ihnen im Menü Format
verschiedene Befehle zur Ausrichtung zur Verfügung.
Visual Basic for Applications
61
Eigenschaften von Steuerelementen
Was sind die wichtigsten Eigenschaften von Steuerelementen? Wie kann ich die Eigenschaften
innerhalb des Programms ändern?
-
Abb.44: Eigenschaften eines Textfeldes
Name
Legt den Namen des Steuerelements fest.
Caption
Legt die Beschriftung des Steuerelements fest.
Value
Gibt den eigentlichen Wert des Steuerelements an.
Text
Gibt den Text im Steuerelement an.
Enabled
Legt fest, ob der Benutzer den Fokus auf das Steuerelement setzen
kann.
Locked
Gibt an, ob das Steuerelement bearbeitet werden kann.
Visible
Gibt an, ob das Steuerelement sichtbar ist.
Font
Legt die Schriftart des Steuerelements fest.
ForeColor
Legt die Vordergrundfarbe fest.
BackColor
Gibt die Hintergrundfarbe des Steuerelements an.
BackStyle
Gibt an, ob der Hintergrund transparent ist oder nicht.
BorderColor
Gibt die Rahmenfarbe an.
BorderStyle
Gibt an, ob ein Rahmen gezogen werden soll.
SpecialEffect
Legt einen 3D-Effekt für das Steuerelement fest.
ControlTipText
Legt einen QuickTip für das Steuerelement fest.
TextAlign
Gibt die Textausrichtung an.
GroupName
Gibt bei Optionsfeldern einen gemeinsamen Gruppennamen an.
Eigenschaften
Für nähere Informationen zu einer Eigenschaft klicken Sie mit der Maus auf die Eigenschaft und drücken Sie die
F1-Taste.
Visual Basic for Applications
62
Ereignisprozeduren
Welche Ereignisse können in einem Formular auftreten? Wie schreibt man Ereignisprozeduren?
-
Abb.45: Erstellen von Ereignisprozeduren
Um zu einem Formular Ereignisprozeduren zu schreiben, wechselt man mit dem
Menübefehl Ansicht – Code in die Code-Ansicht des Formulars. Darin wählt man im
linken Listenfeld das Objekt, das ein Ereignis auslöst, und im rechten Listenfeld das
Ereignis aus. VBA erstellt daraufhin automatisch den Rumpf für die Ereignisprozedur,
die nur mehr mit Code gefüllt werden muß.
Code-Ansicht
Die wichtigsten Ereignisse des UserForm-Objekts:
Ereignisse
Initialize
Tritt ein, wenn das Objekt geladen wird.
Terminate
Tritt ein, wenn das Objekt entladen wird.
QueryClose
Tritt ein, wenn der Benutzer versucht, das Formular zu schließen.
Die wichtigsten Ereignisse von Steurelementen:
BeforeUpdate
Tritt ein, bevor die Value-Eigenschaft des Steuerelements durch
den Benutzer geändert wird.
AfterUpdate
Tritt ein, nachdem dieValue-Eigenschaft des Steuerelements durch
den Benutzer geändert wurde.
Change
Tritt ein, wenn sich die Value-Eigenschaft geändert hat.
Enter
Tritt ein, wenn das Steuerelement den Fokus erhält.
Exit
Tritt ein, wenn das Steuerelement den Fokus verliert.
Click
Tritt ein, wenn der Benutzer auf das Steuerelement klickt.
DblClick
Tritt ein, wenn der Benutzer auf das Steuerelement doppelklickt.
Einige Ereignisse übergeben automatisch Parameter. Für weitere Informationen zu Ereignissen suchen Sie in der
Hilfe nach dem Namen des jeweiligen Ereignisses.
Visual Basic for Applications
63
Anzeigen von Dialogfeldern
Wie kann ich ein Dialogfeld anzeigen? Wie initialisiere ich ein Dialogfeld? Wie greife ich auf
Steuerelemente im Formular zu?
-
Abb.46: Anzeigen eines Dialogfeldes
Um ein UserForm programmgesteuert anzuzeigen, muß es zuerst mitLoadUserFormName geladen werden. Anschließend zeigt die Methode Show das UserForm an, z. B.
MeinErstesUserForm.Show. Das Programm, das das UserForm eingeblendet
hat, wird so lange angehalten, bis das UserForm durch Ereignisprozeduren ausgeblendet oder vom Anwender geschlossen wird.
Anzeigen
In Ereignisprozeduren des Formulars kann über die Eigenschaft Visible das Formular
jederzeit ein- und ausgeblendet werden. Wenn Visible auf False gesetzt wird, wird das
Formular ausgeblendet, und VBA setzt mit jener Prozedur fort, die das Formular mit
Show eingeblendet hat.
Visible
Sie können auf ein Steuerelement und seine Eigenschaften vom Programm aus
zugreifen, indem Sie die Syntax UserForm-Name!Steuerelementname verwenden.
Die Value-Eigenschaft der Steuerelemente ist die Standardeigenschaft und braucht
daher nicht angegeben zu werden.
Value
Um die Steuerelemente in einem Formular zu initialisieren, verwenden Sie die Ereignisprozedur Initialize des
Formulars.
Visual Basic for Applications
64
Zusammenfassen und Vertiefen
Modul 7: Formulare und Dialogfelder
1. Eigene Dialogfelder werden dem Projekt über Menü Einfügen–UserForm hinzugefügt.
Eigene Dialogfelder
Seite 58
2. Die Werkzeugsammlung enthält Steuerelemente, die Formularen hinzugefügt
werden können.
Steuerelemente
Seite 59, 60
3. Die Position eines Steuerelements kann verändert werden, indem man am Rahmen
zieht. Die Größe kann an einem der 8 Ziehpunkte verändert werden.
4. Im Eigenschaften-Fenster müssen Steuerelemente konfiguriert werden. Besonders
wichtig ist die Name-Eigenschaft, die den Namen festlegt, unter dem das Steuerelement angesprochen werden kann.
Eigenschaften von Steuerelementen
Seite 61
5. Ereignisprozeduren reagieren sowohl auf Ereignisse im Formular als auch auf
Ereignisse in Steuerelementen. Sie werden im Code-Modul eines UserForms
definiert.
Ereignisprozeduren
Seite 62
6. Dialogfelder werden mit dem Schlüsselwort Load geladen und mit Show angezeigt. Dabei stoppt die Ausführung des aufrufenden Programms.
Dialogfenster anzeigen
Seite 63
-
Visual Basic for Applications
65
Modul 8
Datenaustausch mit anderen Anwendungen
Wie kann ich auf das Objektmodell anderer Anwendungen zugreifen? Wie kann ich neue Objekte
fremder Anwendungen erstellen? Wie kann ich Daten mittels DDE austauschen? Wie kann ich
Funktionen in den Windows-APIs aufrufen?
In diesem Modul werden folgende Themen behandelt:
• Zugriff auf Objekte anderer Anwendungen
• Datenaustausch mit DDE
• Zugriff auf Windows-Funktionen
Lernziel
Der Anwender lernt Möglichkeiten kennen, mit anderen Anwendungen über Objektmodelle zu kommunizieren
und Windows-Funktionen einzusetzen.
Voraussetzungen
Umgang mit Objekten, Eigenschaften, Methoden und Auflistungen.
Visual Basic for Applications
66
Zugriff auf Objekte anderer Anwendungen
Wie kann ich auf Objekte anderer Anwendungen zugreifen? Wie kann ich neue Objekte fremder
Anwendungen erstellen?
-
Abb.47: Öffnen einer Excel-Arbeitsmappe
Um mit Objekten anderer Anwendung zu arbeiten, sollte man zunächst einmal einen
Verweis auf die Bibliothek der Anwendung erstellen. Dazu wählt man aus dem Menü
Extras – Verweise... Im darauf folgenden Dialog aktiviert man das Kontrollkästchen
neben jeder Bibliothek, die man in dem Projekt benutzen möchte. Man sollte hier auch
jene Bibliotheken, die nicht benutzt werden, deaktivieren, da sie unnötig Speicherplatz verbrauchen.
Verweise
Nun kann auf die Objekte der Anwendung zugegriffen werden. Dazu erstellt man am
besten zunächst einmal eine Objektvariable der jeweiligen Klasse. Bei Klassen, die
keine eindeutigen Namen tragen, wie z. B. Application, muß man den Namen der
Bibliothek gefolgt von einem Punkt voranstellen, z. B. Word.Application. Beispiele:
Deklaration
Dim appWord As Word.Application
Dim wkbMappe As Workbook
Um das Objekt dann wirklich neu zu erstellen, muß man es mit dem Schlüsselwort
New initialisieren. Beispiele:
Set appWord = New Word.Application
Set wkbMappe = New Workbook
Man kann die beiden Vorgänge auch gleich zu einem Befehl zusammenfassen, z. B.
Dim appWord As New Word.Application.
Um ein solches Objekt wieder aus dem Speicher zu entfernen, weist man der
Objektvariablen Nothing zu, z. B. Set appWord = Nothing.
Nothing
Mit den Objekten in der fremden Anwendung können Sie wie gewohnt arbeiten: Sie können Eigenschaften setzen,
Methoden anwenden und auf Auflistungen zugreifen. Sie sollten natürlich mit dem Objektmodell der anderen
Anwendung vertraut sein.
Visual Basic for Applications
67
Exkurs: Datenaustausch mit DDE
Was ist DDE? Wie kann ich mit Hilfe von DDE Daten mit anderen Windows-Anwendungen austauschen?
-
Abb.48: Drucken eines Word-Dokumentes über DDE
DDE steht für Dynamic Data Exchange und ist jener Kommunikationsmechanismus,
der vor allem von älteren Windows-Anwendungen und Fax-Programmen unterstützt
wird.
Dynamic Data Exchange
Um eine DDE-Kommunikation aufzubauen, muß die andere Anwendung bereits
geladen sein. Man kann die Anwendung vorher mit Hilfe des Shell-Befehls starten.
Shell
Man muß zunächst mit der Funktion DDEInitiate den DDE Kanal öffnen. Die Syntax
lautet: intKanalnummer = DDEInitiate (Anwendungsname, Thema).
IntKanalnummer ist eine beliebige Integer-Variable, der die Nummer des DDE-Kanals
zugewiesen wird. Sie wird für die folgenden Befehle benötigt. Anwendungsname ist
meist der Dateiname der Anwendung ohne Erweiterung, z. B. WinWord. Thema ist ein
gültiges DDE-Thema der Anwendung, meist ein Dateiname eines Dokuments.
DDEInitiate
Nachdem der DDE-Kanal initialisiert wurde, können mitVariable = DDERequest
(intKanalnummer, Element) Daten angefordert werden bzw. mit DDEPoke
(intKanalnummer, Element, Daten) Daten gesendet werden. DDEExecute
(intKanalnummer, Befehls-String) sendet Befehle an die Anwendung.
Kommunikation
Nach Abschluß der Kommunikation muß der DDE-Kanal mit DDETerminate
(intKanalnummer) geschlossen werden.
DDETerminate
Für weitere Informationen und Beispiele suchen Sie bitte in der Hilfe und Dokumentation der jeweiligen
Anwendung unter dem Stichwort DDE.
Visual Basic for Applications
68
Exkurs: Zugriff auf Windows-Funktionen
Wie kann ich auf eingebaute Windows-Funktionen zugreifen? Wo finde ich Informationen zu diesen
Funktionen?
-
Abb.49: Deklaration von Windows-Funktionen
Eingebaute Windows-Funktionen müssen vor Ihrer Verwendung als Prozeduren oder
Funktionen auf Modulebene deklariert werden. Dazu dient die folgende Syntax:
Deklaration
Public Declare Sub Prozedurname Lib "Bibliotheksname" _
(Parameterliste)
Public Declare Function Funktionsname Lib _
"Bibliotheksname" (Parameterliste) As Datentyp
Der Prozedurname und der Funktionsname muß exakt dem Namen der WindowsFunktion entsprechen. Ebenso muß die Parameterliste und bei Funktionen der
Rückgabe-Datentyp genau mit der Definition der Funktion übereinstimmen. Der
Bibliotheksname ist der Name der Programmierschnittstelle, normalerweise eine
DLL- oder EXE-Datei. Statt Public kann auf Wunsch natürlich auch Private verwendet
werden.
Um der Prozedur oder Funktion in ihrem Projekt einen anderen Namen zu geben, so
verwendet man das Schlüsselwort Alias, z. B.:
Alias
Declare Sub MessageBeep Lib "User32" Alias "Signal1" _
(ByVal N As Integer)
Die so deklarierten Prozeduren und Funktionen können dann wie normale Prozeduren und Funktionen verwendet werden.
Verwendung
Für Informationen über die Windows-Programmierschnittstellen lesen Sie bitte die Dokumentation zu systemnahen Programmiersprachen, wie z. B. Visual C++. Die Programmierschnittstellen sind auch auf den quartalsmäßig erscheinenden CDs des Microsoft Developer Network dokumentiert.
Visual Basic for Applications
69
Zusammenfassen und Vertiefen
Modul 8: Datenaustausch mit anderen Anwendungen
1. Mit Menü Extras–Verweise... können Objektbibliotheken anderer Anwendungen
geladen werden. Neue Objekte anderer Anwendungen werden mit dem Schlüsselwort New erzeugt.
Objekte in anderen
Anwendungen
Seite 66
2. Mit Hilfe von DDE kann mit älteren Windows-Anwendungen und Fax-Programmen kommuniziert werden.
Datenaustausch mit DDE
Seite 67
3. Mit dem Schlüsselwort Declare können Windows-Funktionen als Prozeduren und
Funktionen deklariert werden. Man kann dann auf sie wie auf herkömmliche
Prozeduren und Funktionen zugreifen.
Windows-Funktionen
Seite 68
-
Visual Basic for Applications
70
Wichtige Tastenkombinationen
Wie kann ich meine Arbeit mit VBA beschleunigen?
Taste(n)
F5
Funktion
Ausführen einer Sub-Prozedur oder eines UserForm-Formulars
F8
Zeilenweises Ausführen von Code
UMSCHALT + F8
Zeilenweises Ausführen von Code mit Prozedurschritten
STRG + PAUSE
STRG + G
Unterbrechen der Ausführung einer Visual Basic-Anwendung
Anzeigen des Direktfensters
F7
Code-Fenster anzeigen
F2
STRG + F
Objektkatalog anzeigen
Suchen
STRG + H
Ersetzen
F3
Weitersuchen
UMSCHALT + F3
STRG + NACH-UNTEN
Vorheriges suchen
Nächste Prozedur
STRG + NACH-OBEN
Vorherige Prozedur
STRG + Z
STRG + Y
Rückgängig
Aktuelle Zeile löschen
TAB
UMSCHALT + TAB
Einzug vergrößern
Einzug verkleinern
STRG + UMSCHALT + F9
Alle Haltepunkte löschen
Visual Basic for Applications
71
Index
Symbole
? ................................ 13
A
Abbruchbedingung ... 44
Abfrage ............... 28, 29
Access 6, 28, 29, 37, 58
AfterUpdate .............. 62
Algorithmus ................ 8
Alias ......................... 68
And ........................... 48
Anweisung ................ 10
Anzeige .................... 59
Application ......... 34, 35
Array ......................... 17
As ..... 18, 22, 23, 26, 28
Auflistung ........... 34, 35
Auflistungsobjekt ...... 36
Ausgabe ...................... 8
B
BackColor ........... 58, 61
BackStyle .................. 61
Befehl ....................... 10
Befehlsschaltfläche ... 59
BeforeUpdate............ 62
Benutzerformular ........ 7
Benutzerschnittstelle .................. 8, 10
Berechnungen ........... 10
Bericht ................ 28, 29
Bezeichnungsfeld ..... 59
Bibliothek ..... 38, 58, 66
Bildlaufleiste ............. 59
Boolean .............. 19, 48
Boolescher
Ausdruck ... 48, 49, 50
BorderColor ........ 58, 61
BorderStyle ......... 58, 61
ByRef ........................ 27
Byte .......................... 19
ByVal ........................ 27
C
Call ........................... 11
Call by Reference ..... 27
Call by Value ............ 27
Caption ............... 58, 61
Case .......................... 50
Case Else ................... 50
Change ..................... 62
Click ......................... 62
Const ........................ 22
Controls .................... 34
ControlTipText .......... 61
Count .................. 35, 36
Currency ................... 19
CVError ..................... 19
D
Date .................... 10, 19
Datenfeld ............ 17, 23
Datentyp ................... 19
Datum/Uhrzeit .......... 19
DblClick ................... 62
DDE .......................... 67
DDEExecute ............. 67
DDEInitiate ............... 67
DDEPoke .................. 67
DDERequest ............. 67
DDETerminate .......... 67
Debug ....................... 12
Debug.Print .............. 12
Decimal .................... 19
Declare ..................... 68
Deklarationsteil .......... 8
Dialogbox ................... 7
Dialogfeld ........... 58, 63
Dim ........ 18, 20, 21, 23
Direktbereich ............ 13
DLL-Datei ................. 68
Do ............................ 47
Do-Loop ............. 47, 48
Document ................. 19
Dokument ................... 7
Double ..................... 19
Drehfeld ................... 59
Dynamic Data
Exchange ............... 67
E
Eigenschaft..... 7, 34, 36,
41, 61
Eigenschaftenfenster .. 7,
40, 58, 59
Eigenschaftsprozedur 41
Einfachverzweigung ................ 48, 49
Eingabe ....................... 8
Einzelschritt .............. 14
Einzelschrittmodus .... 14
Else ........................... 49
Empty ....................... 19
Enabled ..................... 61
End Function ............. 28
End If ........................ 49
End Select ................. 50
End Sub .................... 11
End With................... 39
Enter ......................... 62
Ereignis ..................... 11
Ereignisprozedur ....... 62
Err ....................... 53, 54
Err.Number ............... 53
Err.Raise.................... 54
Error .......................... 19
Ersetzen ...................... 9
Excel ... 6, 28, 29, 38, 58
EXE-Datei.................. 68
Exit ........................... 62
Exit Do ...................... 47
Exit For ............... 45, 46
Exit Function ............. 28
Exit Sub............... 11, 21
F
False ................... 19, 48
Fehlernummer .... 53, 54
Fehlerroutine ...... 53, 55
Festkommazahl ......... 19
Fließkommazahl ....... 19
Flußdiagramme ........... 8
Fokus ........................ 62
Font .................... 36, 61
For ............................ 45
For - Next ..... 31, 45, 46
For Each.................... 46
For Each - Next ......... 46
ForeColor............ 58, 61
Form ................... 19, 34
Forms .................. 34, 35
Formular ............. 28, 29
Function ............. 28, 68
Funktion . 10, 28, 41, 68
Funktionsmethode .... 37
In .............................. 46
Index .................. 23, 35
Indexnummer ..... 23, 31
Initialize .............. 62, 63
InputBox ................... 12
Int ....................... 10, 13
Integer ...................... 19
Internet Explorer ......... 6
Is ......................... 48, 50
IsEmpty ..................... 19
IsError ....................... 19
IsMissing ................... 30
IsNull ........................ 19
-
K
Klasse ........... 19, 34, 40
Klassenmodul ..... 40, 41
Kombinationsfeld ...... 59
Kommentar ................. 9
Kompilieren .............. 21
Konstante ............ 17, 22
Kontrollkästchen ....... 59
L
Laufzeitfehler ............ 53
LBound ..................... 23
Lib ............................ 68
Listenfeld .................. 59
Load ......................... 63
Locked ...................... 61
Lokal-Fenster ............ 13
Long ......................... 19
Loop ......................... 47
H
Haltepunkt ................ 14
M
Makro . 7, 11, 13, 26, 29
Mehrfachverzweigung ................ 48, 50
Meldungsbox ............ 12
MessageBeep ............ 68
Methode ....... 34, 37, 41
Microsoft Developer
Network ................ 68
Modul ......... 7, 9, 20, 29
Modulebene ....... 20, 29
Modulkopf .... 18, 20, 22
MSForms ............. 38, 58
MsgBox..................... 12
Multiseiten ................ 59
I
If ............................... 49
If-Then-Else ............... 49
N
Name ...... 34, 36, 58, 61
New .................... 40, 66
G
Ganzzahl .................. 19
GroupName.............. 61
Grundrechnungsarten 10
Gültigkeitsbereich 20, 29
Gültigkeitsdauer ....... 21
Visual Basic for Applications
Next .................... 45, 46
Not ........................... 48
Nothing .............. 19, 66
Null .......................... 19
O
Object ................ 18, 19
Objekt 19, 34, 35, 40, 66
Objektkatalog ........... 38
Objektmodell ...... 38, 66
Objektvariable .......... 34
Office ....................... 38
OLE-AutomatisierungsServer ...................... 6
On Error Goto ..... 53, 55
On Error Goto 0 ........ 53
On Error Resume Next 53
OpenRecordset ......... 37
Operator ................... 48
Option Explicit .......... 18
Optional ................... 30
Optionale Parameter . 30
Optionsfeld ............... 59
Or ............................. 48
Outlook ...................... 6
P
ParamArray ............... 31
Parameter .... 10, 26, 28,
31, 37, 62
Parameterfeld............ 31
Post-CheckSchleife ............ 44, 47
Potenzieren ............... 10
Powerpoint ..... 6, 29, 58
Pre-Check-Schleife .. 44,
45, 46, 47
Preserve .................... 23
Print .......................... 13
Private .... 18, 20, 22, 29
Project ........................ 6
Projekt .................. 7, 21
Projekt-Explorer .......... 7
Projektebene ....... 20, 29
Property Get ............. 41
Property Let .............. 41
Property Set .............. 41
Prozedur 11, 26, 27, 29,
30, 31, 37, 41, 68
Prozedurebene.......... 20
Prozedurkopf 26, 29, 31
Prozedurmethode ..... 37
Prozedurschrittt ......... 14
Public .... 18, 20, 21, 22,
23, 29, 41
Q
QueryClose ............... 62
R
Rahmen .................... 59
Raise ......................... 54
Range ....................... 36
Recordset .................. 19
ReDim ...................... 23
Referenz ................... 27
Referenzübergabe ..... 27
Register ..................... 59
Resume ..................... 53
Resume Next ............ 53
S
Schleife ..................... 44
Schleifenfuß .............. 44
Schleifenkopf ............ 44
Schleifenkörper ......... 44
Schnittstelle ................ 8
Schrittweite ............... 45
72
Select Case ............... 50
Set ...................... 18, 19
Shell ......................... 67
Show ........................ 63
Single ........................ 19
Size........................... 36
SpecialEffect ....... 58, 61
Sprungmarke............. 53
Standard-Fehlerbehandlung............ 53
Standardmodul ........... 9
Static....... 18, 20, 21, 23
Step .......................... 45
Steuerelement .... 59, 60,
61, 62, 63
String ........................ 19
Struktogramme............ 8
Sub ..................... 11, 68
Suchen ........................ 9
T
Tabellenblatt ....... 28, 29
Terminate ................. 62
Text .......................... 61
TextAlign .................. 61
Textfeld..................... 59
Then ......................... 49
To ................. 23, 45, 50
True .............. 19, 47, 48
U
Überwachungsfenster 13
UBound .............. 23, 31
Umschaltfläche ......... 59
Until ......................... 47
UserForm 58, 59, 62, 63
V
Value ............ 61, 62, 63
Variable ....... 17, 18, 19,
20, 27
Variablendeklaration
erforderlich ............ 18
Variablenname ... 17, 18
Variant ...................... 19
VarType .................... 19
VB-Skript .................... 6
Verarbeitung ............... 8
Vergleichsoperator .... 48
Verweis................. 7, 66
Verzweigung ............ 48
Visible ................ 61, 63
Visual Basic für
Applikationen .......... 6
Visual Basic-Editor ...... 6
Visual C++ ............ 6, 68
Vorlage ....................... 7
W
Wend ........................ 47
Werkzeugsammlung . 58
Wert ......................... 27
While ........................ 47
While Wend ............ 47
With.......................... 39
Word ........ 6, 29, 38, 58
Word.Application ..... 66
Workbook........... 19, 66
Workbooks ......... 35, 36
Worksheets ............... 35
Z
Zählervariable .......... 45
Zählschleife .............. 45
Zeichenkette ............. 19
Ziehpunkt ................. 60
Zweifachverzweigung ......... 48, 49
2
easy
know-how
Erhard Closs – Ihr PC-Coach
Franz-Fackler-Str. 6
80995 München
Telefon:
089/ 910 72 813
Telefax:
089/ 910 72 814
[email protected]
www.easy2know-how.de
Dieses Werk ist urheberrechtlich geschützt.
Alle dadurch begründeten Rechte, insbesondere der Nachdruck, die Übersetzung, die
Wiedergabe auf photomechanischen oder ähnlichen Wegen, die Speicherung und Verarbeitung mit Hilfe der EDV bleiben auch auszugsweise ausdrücklich dem Urheber
vorbehalten.
Die in den Beispielen verwendeten Namen von Firmen, Produkten, Personen, Zeichen
oder sonstigen Daten sind frei erfunden. Ähnlichkeiten mit tatsächlichen Personen,
Firmen, Produkten oder Ereignissen sind rein zufällig und nicht beabsichtigt.
easy2know-how