Galileo Computing
Einstieg in VBA mit Excel
Für Microsoft Excel 2002 bis 2013
Bearbeitet vonThomas Theis
3., aktualisierte und erweiterte Auflage 2013 2013. Taschenbuch. 447 S. PaperbackISBN 978 3 8362 2026 2
Format (B x L): 17,2 x 23 cm
Weitere Fachgebiete > EDV, Informatik > Programmiersprachen: Methoden >Microsoft Programmierung
schnell und portofrei erhältlich bei
Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbücher, insbesondere Recht, Steuern und Wirtschaft.Im Sortiment finden Sie alle Medien (Bücher, Zeitschriften, CDs, eBooks, etc.) aller Verlage. Ergänzt wird das Programmdurch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Büchern zu Sonderpreisen. Der Shop führt mehr
als 8 Millionen Produkte.
Thomas Theis
Einstieg in VBA mit Excel
Auf einen Blick
Auf einen Blick
1 Einführung .................................................................................................................... 17
2 Grundlagen von Objekten und Ereignissen ....................................................... 49
3 Grundlagen der Programmierung mit VBA ....................................................... 103
4 Fehlerbehandlung ...................................................................................................... 139
5 Mehr über die Programmierung mit VBA ........................................................... 147
6 Mehr über Objekte ..................................................................................................... 185
7 Diagramme und Grafiken ........................................................................................ 205
8 VBA- und Worksheet-Funktionen ......................................................................... 249
9 Externe Daten .............................................................................................................. 295
10 Dialogfelder .................................................................................................................. 359
11 Beispielprojekte ........................................................................................................... 385
Inhalt
5
Inhalt
Geleitwort des Fachgutachters .............................................................................................. 15
1 Einführung 17
1.1 Was wird besser durch Makros und VBA? ............................................................... 17
1.2 MS Office 2013 ............................................................................................................... 19
1.3 Arbeiten mit Makros ................................................................................................... 20
1.3.1 Makro aufzeichnen ......................................................................................... 20
1.3.2 Makro ausführen ............................................................................................ 23
1.3.3 Makro ansehen ................................................................................................ 23
1.3.4 Makro speichern ............................................................................................. 25
1.3.5 Makrosicherheit ändern ................................................................................. 26
1.3.6 Registerkarte »Entwicklertools« .................................................................... 28
1.3.7 Makrosicherheit dauerhaft ändern .............................................................. 29
1.4 Entwicklungsumgebung Visual Basic Editor .......................................................... 31
1.4.1 Menüleiste und Symbolleiste ........................................................................ 31
1.4.2 Projekt-Explorer und Eigenschaften-Fenster ............................................... 32
1.4.3 Codefenster ..................................................................................................... 33
1.5 Makrocode verstehen und ändern ........................................................................... 34
1.6 Makro per Schaltfläche ausführen ........................................................................... 36
1.7 Relative Aufzeichnung ................................................................................................ 37
1.8 Persönliche Makroarbeitsmappe .............................................................................. 39
1.9 Code schreiben, einfache Ausgabe ........................................................................... 41
1.9.1 Eigene Sub-Prozedur ....................................................................................... 41
1.9.2 Ausgabe in Zelle .............................................................................................. 42
1.9.3 Ausgabe in Nachrichtenbox .......................................................................... 43
1.9.4 Ausgabe im Direktfenster des VBEs .............................................................. 44
1.10 Arbeiten mit Excel vor der Version 2007 ................................................................. 45
1.10.1 Makro aufzeichnen ......................................................................................... 45
1.10.2 Makro ausführen ............................................................................................ 46
1.10.3 Makro ansehen ................................................................................................ 46
Inhalt
6
1.10.4 Makro speichern ............................................................................................. 46
1.10.5 Makrosicherheit .............................................................................................. 47
1.10.6 Symbolleiste »Visual Basic« ........................................................................... 47
1.10.7 Entwicklungsumgebung Visual Basic Editor ............................................... 47
1.10.8 Persönliche Makroarbeitsmappe .................................................................. 48
2 Grundlagen von Objekten und Ereignissen 49
2.1 Objekthierarchie und Auflistungen ......................................................................... 49
2.2 Arbeitsmappen ............................................................................................................. 50
2.2.1 Anzahl Arbeitsmappen ermitteln ................................................................. 51
2.2.2 Neue Arbeitsmappe erzeugen ....................................................................... 51
2.2.3 Vorhandene Arbeitsmappe öffnen ............................................................... 52
2.2.4 Alle Arbeitsmappen schließen ....................................................................... 53
2.2.5 Name einer Arbeitsmappe ermitteln ........................................................... 53
2.2.6 Aktive Arbeitsmappe ...................................................................................... 54
2.2.7 Arbeitsmappe aktivieren ................................................................................ 56
2.2.8 Arbeitsmappe speichern ................................................................................ 56
2.2.9 Arbeitsmappe über Index oder Name auswählen ...................................... 57
2.2.10 Pfad einer Arbeitsmappe ermitteln .............................................................. 58
2.3 Tabellenblätter ............................................................................................................. 60
2.3.1 Tabellenblatt erzeugen .................................................................................. 60
2.3.2 Tabellenblatt kopieren ................................................................................... 61
2.3.3 Tabellenblatt verschieben .............................................................................. 62
2.3.4 Tabellenblatt löschen ..................................................................................... 63
2.3.5 Tabellenblatt aktivieren ................................................................................. 64
2.3.6 Tabellenblatt formatieren ............................................................................. 64
2.3.7 Gitternetz, Zeilen- und Spaltenüberschrift .................................................. 65
2.3.8 Seiteneinrichtung ........................................................................................... 66
2.4 Zellen und Zellbereiche ............................................................................................... 68
2.4.1 Zellen über »Range« auswählen ................................................................... 68
2.4.2 Zellen über »Cells« auswählen ...................................................................... 71
2.4.3 Zellinhalte verschieben oder kopieren ......................................................... 72
2.4.4 Teile von Zellinhalten kopieren ..................................................................... 73
2.4.5 Zellinhalt löschen ............................................................................................ 74
2.4.6 Werte und Formeln eintragen ....................................................................... 76
Inhalt
7
2.4.7 Zellformat »Zahlen« ....................................................................................... 77
2.4.8 Zellformat »Ausrichtung« .............................................................................. 79
2.4.9 Zellformat »Schrift« ........................................................................................ 80
2.4.10 Einzelne Zeichen formatieren ....................................................................... 81
2.4.11 Zellformat »Rahmen« ..................................................................................... 83
2.4.12 Zellformat »Muster« ....................................................................................... 84
2.4.13 Zellen einfügen ............................................................................................... 85
2.4.14 Zellen löschen .................................................................................................. 86
2.4.15 Zeilenhöhe und Spaltenbreite ....................................................................... 87
2.4.16 Benutzten Zellbereich erkennen ................................................................... 88
2.4.17 Spezielle Zellen erkennen .............................................................................. 89
2.4.18 Versatz mit Offset ........................................................................................... 91
2.4.19 Zellbereich sortieren ....................................................................................... 94
2.5 Ereignisprozeduren ...................................................................................................... 97
2.5.1 Arbeitsmappe wird geöffnet ......................................................................... 97
2.5.2 Arbeitsmappe wird geschlossen ................................................................... 98
2.5.3 Tabellenblatt wird aktiviert ........................................................................... 99
2.5.4 Zellauswahl wechselt ..................................................................................... 99
2.5.5 Doppelklick auf Zelle ...................................................................................... 100
2.5.6 Tabellenblatt wurde neu berechnet ............................................................. 101
3 Grundlagen der Programmierung mit VBA 103
3.1 Allgemeines ................................................................................................................... 103
3.1.1 Codeblöcke auskommentieren ...................................................................... 104
3.1.2 Zeilen zerlegen ................................................................................................ 105
3.2 Variablen und Datentypen ......................................................................................... 106
3.2.1 Namen, Werte ................................................................................................. 106
3.2.2 Deklarationen .................................................................................................. 106
3.2.3 Datentypen ...................................................................................................... 107
3.2.4 Konstanten ...................................................................................................... 111
3.3 Operatoren .................................................................................................................... 113
3.3.1 Arithmetische Operatoren ............................................................................. 113
3.3.2 Vergleichsoperatoren ..................................................................................... 117
3.3.3 Logische Operatoren ....................................................................................... 120
Inhalt
8
3.3.4 Verkettungsoperator ...................................................................................... 121
3.3.5 Rangfolge der Operatoren ............................................................................. 122
3.4 Verzweigungen ............................................................................................................. 124
3.4.1 Einzeiliges If ... Then ... Else ............................................................................. 124
3.4.2 If-Then-Else-Block ........................................................................................... 125
3.4.3 Select Case ....................................................................................................... 127
3.5 Schleifen ......................................................................................................................... 129
3.5.1 For-Next-Schleife ............................................................................................ 130
3.5.2 Do-Loop-Schleife ............................................................................................. 133
4 Fehlerbehandlung 139
4.1 Syntaxfehler .................................................................................................................. 139
4.2 Laufzeitfehler ................................................................................................................ 140
4.2.1 Programm mit Laufzeitfehlern ...................................................................... 140
4.2.2 Abfangen mit On Error ................................................................................... 142
4.3 Logische Fehler und Debugging ................................................................................ 144
4.3.1 Einzelschrittverfahren .................................................................................... 144
4.3.2 Haltepunkte ..................................................................................................... 146
5 Mehr über die Programmierung mit VBA 147
5.1 Gültigkeitsbereiche ..................................................................................................... 147
5.2 Datenfelder ................................................................................................................... 149
5.2.1 Eindimensionale Datenfelder ........................................................................ 150
5.2.2 Mehrdimensionale Datenfelder .................................................................... 152
5.2.3 Dynamische Datenfelder ............................................................................... 155
5.2.4 Datenfelder löschen oder freigeben ............................................................. 157
5.3 Prozeduren und Funktionen ...................................................................................... 159
5.3.1 Prozeduren ....................................................................................................... 160
5.3.2 Übergabe von Parametern ............................................................................. 163
Inhalt
9
5.3.3 Funktionen ....................................................................................................... 164
5.3.4 Optionale Parameter ...................................................................................... 168
5.3.5 Benannte Parameter ...................................................................................... 170
5.3.6 Beliebig viele Parameter ................................................................................. 172
5.3.7 Datenfelder als Parameter ............................................................................. 174
5.4 Benutzerdefinierter Datentyp ................................................................................... 176
5.5 Modular programmieren ............................................................................................ 179
5.5.1 Code in der gleichen Datei ............................................................................. 179
5.5.2 Code in einer anderen Datei .......................................................................... 180
5.6 Module exportieren und importieren ...................................................................... 182
5.6.1 Export eines Moduls ....................................................................................... 183
5.6.2 Import eines Moduls ....................................................................................... 184
6 Mehr über Objekte 185
6.1 Objektkatalog ............................................................................................................... 185
6.2 Referenzierung von Objekten ................................................................................... 186
6.2.1 Beispiel »Zellen verschieben« ........................................................................ 187
6.3 Objektzugriff mit With ............................................................................................... 188
6.4 Arbeiten mit Objektvariablen ................................................................................... 190
6.4.1 Objektvariablen hierarchisch zuweisen ....................................................... 191
6.4.2 Neue Objekte erzeugen .................................................................................. 192
6.4.3 Objekttyp ermitteln ........................................................................................ 193
6.5 For-Each-Schleife .......................................................................................................... 194
6.6 Collections ..................................................................................................................... 196
6.7 Hauptobjekt »Application« ........................................................................................ 198
6.7.1 Anwendungspfad ausgeben .......................................................................... 198
6.7.2 Prozedur zeitverzögert aufrufen ................................................................... 198
6.7.3 Anwendung Microsoft Excel schließen ........................................................ 199
6.8 Filtern .............................................................................................................................. 200
Inhalt
10
7 Diagramme und Grafiken 205
7.1 Diagramm erstellen ..................................................................................................... 206
7.1.1 Diagrammblatt erstellen ............................................................................... 206
7.1.2 Eingebettetes Diagramm erstellen ............................................................... 208
7.2 Diagramm ändern ........................................................................................................ 210
7.2.1 Diagrammblatt ändern .................................................................................. 210
7.2.2 Eingebettetes Diagramm ändern .................................................................. 215
7.3 Diagramm verwalten .................................................................................................. 215
7.3.1 Diagrammblatt verwalten ............................................................................. 216
7.3.2 Eingebettetes Diagramm verwalten ............................................................ 217
7.4 Beispiel: Formatiertes Kreisdiagramm .................................................................... 219
7.5 Shapes ............................................................................................................................. 222
7.5.1 Rechteck ........................................................................................................... 223
7.5.2 Oval ................................................................................................................... 224
7.5.3 Linie .................................................................................................................. 225
7.5.4 Verbinder ......................................................................................................... 226
7.5.5 Freiform ............................................................................................................ 228
7.5.6 Alle Formen ...................................................................................................... 231
7.6 WordArt .......................................................................................................................... 234
7.7 Bedingte Formatierungen .......................................................................................... 236
7.7.1 Datenbalken .................................................................................................... 236
7.7.2 Zweifarbige Farbskala .................................................................................... 237
7.7.3 Dreifarbige Farbskala ..................................................................................... 239
7.7.4 Symbolsatz ...................................................................................................... 240
7.8 Sparklines ....................................................................................................................... 243
7.8.1 Linie .................................................................................................................. 243
7.8.2 Spalte ................................................................................................................ 244
7.8.3 Gewinn-/Verlustanzeige ................................................................................ 244
7.8.4 Formatierung ................................................................................................... 245
7.8.5 Alle Farben ....................................................................................................... 246
7.9 SmartArt ......................................................................................................................... 247
Inhalt
11
8 VBA- und Worksheet-Funktionen 249
8.1 Formeln zuweisen und lesen ..................................................................................... 250
8.1.1 Formeln zuweisen ........................................................................................... 251
8.1.2 Formeln lesen .................................................................................................. 252
8.2 Eingaben des Benutzers .............................................................................................. 253
8.2.1 Funktion »InputBox« ...................................................................................... 253
8.2.2 Methode »Application.InputBox« ................................................................. 254
8.3 Einfacher Dialog mit dem Benutzer ......................................................................... 258
8.3.1 Button »OK« .................................................................................................... 259
8.3.2 Buttons – eine Übersicht ................................................................................ 259
8.3.3 Zeichen »Information« ................................................................................... 261
8.3.4 Systemmodal ................................................................................................... 261
8.3.5 Buttons »Ja« und »Nein« ............................................................................... 262
8.3.6 Drei Buttons, Default-Button ........................................................................ 263
8.3.7 Buttons »Wiederholen« und »Abbrechen« .................................................. 264
8.3.8 Buttons »Abbrechen«, »Wiederholen« und »Ignorieren« .......................... 265
8.4 Zeichenketten ............................................................................................................... 266
8.4.1 Zeichenketten umwandeln ............................................................................ 268
8.4.2 Ausgabeformatierung .................................................................................... 270
8.4.3 Datensätze zusammenfügen ........................................................................ 272
8.4.4 Datensätze zerlegen ....................................................................................... 273
8.5 Datum und Uhrzeit ...................................................................................................... 274
8.5.1 Zeitintervall addieren ..................................................................................... 275
8.5.2 Zeitdifferenz berechnen ................................................................................. 276
8.5.3 Datumsangaben erstellen, Wochentage markieren ................................... 276
8.5.4 Jahreskalender ................................................................................................ 278
8.5.5 ISO-Kalenderwoche ........................................................................................ 281
8.5.6 Arbeitstage berechnen ................................................................................... 281
8.6 Weitere Funktionen ..................................................................................................... 284
8.6.1 Anwendung unterbrechen ............................................................................. 284
8.6.2 Einheitenumrechnung ................................................................................... 285
8.6.3 Zahlensystemumrechnung ............................................................................ 287
8.6.4 Zellen zählen ................................................................................................... 288
8.6.5 Webfunktionen ............................................................................................... 289
Inhalt
12
8.6.6 Größte und kleinste Werte finden ................................................................ 292
8.6.7 Runden ............................................................................................................. 293
8.6.8 Römische und arabische Zahlen ................................................................... 294
9 Externe Daten 295
9.1 Textdateien, Import und Export ............................................................................... 295
9.1.1 Lesen aus Textdateien .................................................................................... 295
9.1.2 Import von Datensätzen ................................................................................ 297
9.1.3 Schreiben in Textdateien ............................................................................... 300
9.1.4 Export von Datensätzen ................................................................................. 301
9.2 Arbeiten mit Dateien ................................................................................................... 303
9.2.1 Dateien suchen und auflisten ....................................................................... 303
9.2.2 Informationen über Dateien .......................................................................... 305
9.2.3 Operationen mit Dateien ............................................................................... 307
9.3 Austausch mit Microsoft Word ................................................................................. 309
9.3.1 Objektmodell von Word ................................................................................. 309
9.3.2 Import von Absätzen aus Word ..................................................................... 311
9.3.3 Import von Tabellen aus Word ...................................................................... 313
9.3.4 Export zu Word, Erstellen von Absätzen ...................................................... 315
9.3.5 Export zu Word, Erstellen von Tabellen ........................................................ 316
9.4 Austausch mit Microsoft Outlook ............................................................................. 319
9.4.1 Objektmodell von Outlook ............................................................................. 319
9.4.2 Einfaches Versenden einer Arbeitsmappe ................................................... 321
9.4.3 Integriertes E-Mail-Dialogfeld ....................................................................... 323
9.4.4 Zusammensetzen einer E-Mail ...................................................................... 324
9.4.5 Erstellen einer Serien-E-Mail ......................................................................... 326
9.4.6 Bestimmten Bereich in E-Mail versenden .................................................... 328
9.4.7 Zugriff auf Outlook-Verzeichnis .................................................................... 330
9.4.8 Zugriff auf E-Mail-Anhänge ........................................................................... 332
9.4.9 Zugriff auf Kontakte ....................................................................................... 335
9.4.10 Kontakt erzeugen ............................................................................................ 336
9.4.11 Termin erzeugen ............................................................................................. 337
9.4.12 Terminserie erzeugen ..................................................................................... 339
Inhalt
13
9.5 Austausch mit Microsoft Access ................................................................................ 341
9.5.1 Beispieldatenbank: Aufbau ........................................................................... 341
9.5.2 Beispieldatenbank: Verbindung herstellen ................................................. 342
9.5.3 SQL-Befehle ..................................................................................................... 343
9.5.4 Beispieldatenbank: Auswahlabfrage ............................................................ 344
9.5.5 Beispieldatenbank: Aktionsabfrage .............................................................. 346
9.5.6 SQL: Auswahlabfragen mit SELECT ............................................................... 348
9.5.7 SQL: Operatoren .............................................................................................. 350
9.5.8 SQL: Abfrageergebnis sortieren ..................................................................... 352
9.5.9 SQL: Auswahlabfragen zur Suche nach Eingabe ......................................... 353
9.5.10 SQL: Aktionsabfrage zum Ändern mit UPDATE ........................................... 355
9.5.11 SQL: Aktionsabfrage zum Einfügen mit INSERT .......................................... 357
9.5.12 SQL: Aktionsabfrage zum Löschen mit DELETE ........................................... 357
10 Dialogfelder 359
10.1 Integrierte Dialogfelder .............................................................................................. 359
10.1.1 Datei öffnen ..................................................................................................... 360
10.1.2 Datei speichern unter ..................................................................................... 361
10.1.3 Hintergrundmuster für Zellbereich auswählen .......................................... 362
10.1.4 Schriftformatierung für Zellbereich auswählen .......................................... 362
10.2 Eigene Dialogfelder und Anwendungen ................................................................. 363
10.2.1 Ein erstes Beispiel ............................................................................................ 363
10.2.2 Erstes Beispiel: Gestaltung ............................................................................ 364
10.2.3 Erstes Beispiel: Code ....................................................................................... 365
10.2.4 Erstes Beispiel: Starten ................................................................................... 367
10.2.5 Arbeiten mit Steuerelementen ..................................................................... 368
10.2.6 Textfeld und Bezeichnungsfeld ..................................................................... 369
10.2.7 Optionsschaltflächen und Kontrollkästchen ............................................... 372
10.2.8 Liste, Bildlaufleiste und Drehfeld .................................................................. 376
10.2.9 Ausgabeformatierung .................................................................................... 379
10.2.10 RefEdit und Umschaltfeld .............................................................................. 381
Inhalt
14
11 Beispielprojekte 385
11.1 Memory .......................................................................................................................... 385
11.1.1 Spielablauf ....................................................................................................... 385
11.1.2 Aufbau des Spielfeldes ................................................................................... 387
11.1.3 Starten des Spiels ............................................................................................ 388
11.1.4 Bedienung des Spiels ...................................................................................... 391
11.2 Snake .............................................................................................................................. 395
11.2.1 Spielablauf ....................................................................................................... 396
11.2.2 Aufbau des Spielfeldes ................................................................................... 397
11.2.3 Starten des Spiels ............................................................................................ 399
11.2.4 Bedienung des Spiels ...................................................................................... 404
11.3 Vokabeln ........................................................................................................................ 405
11.3.1 Programmablauf ............................................................................................. 406
11.3.2 Aufbau der Vokabelsammlung ..................................................................... 407
11.3.3 Starten des Spiels ............................................................................................ 408
Anhang 415
A Lösungen ........................................................................................................................ 415
B Der Autor ........................................................................................................................ 425
Index .......................................................................................................................................... 427
17
Kapitel 1
Einführung
In diesem Kapitel lernen Sie erste VBA-Makros kennen. Sie erfahren, wie sie
aufgebaut sind und wie man sie verändern kann. Außerdem wird die Ent-
wicklungsumgebung für VBA erläutert.
VBADie Abkürzung VBA steht für Visual Basic for Applications. Es handelt sich
dabei um die Programmiersprache Visual Basic, mit speziellen Ergänzun-
gen für die verschiedenen Anwendungen in Microsoft Office.
Mit Microsoft Excel können sehr viele alltägliche Aufgaben im beruflichen
und privaten Bereich bereits gut bewältigt werden. Es gibt jedoch
� Aufgaben, die man nur durch zusätzliche Programmierung mit VBA
lösen kann, und
� Probleme, die durch zusätzliche Programmierung mit VBA schneller ge-
löst werden können.
In diesem Buch werden Sie anhand von leicht verständlichen Beispielen
erlernen, wie man VBA als Ergänzung zu Excel sinnvoll einsetzt. Eigene
Übungen (mit den Lösungen im Anhang) dienen dazu, Ihren Wissensstand
zu testen.
Für die Hilfe bei der Erstellung dieses Buches bedanke ich mich beim gan-
zen Team von Galileo Press, ganz besonders bei Anne Scheibe.
1.1 Was wird besser durch Makros und VBA?
MakroEin einfaches Makro ist nur eine Reihe von Anweisungen, die nacheinander
ausgeführt werden. Durch eine solche Anweisung wird in Excel ein
bestimmter Vorgang ausgeführt, z.B. eine Zahl in eine Tabellenzelle
geschrieben. Die Anweisungen sind in der Sprache VBA geschrieben. VBA-
Programme können weit über einfache Makros hinausgehen und kom-
plexe Abläufe steuern.
1 Einführung
18
In der Praxis sieht es häufig so aus, dass es zwei Gruppen von Anwendern
gibt:
Entwickler � Entwickler, also erfahrene Excel-Anwender, die sich mit der Entwicklung
von komplexen Excel-Anwendungen befassen
Benutzer � Benutzer, also Einsteiger in Excel, die sich nur mit einfachen Themen,
z.B. der Dateneingabe und dem Aufruf der Excel-Anwendungen, be-
fassen
Die Entwickler sind die Auftragnehmer der Benutzer. Die Entwicklung kann
in einer anderen Abteilung des gleichen Unternehmens stattfinden. Es
kann sich aber auch um externe, eingekaufte Excel-Anwendungen han-
deln.
Schneller Eine schnellere Problemlösung durch VBA ergibt sich, weil
� der Entwickler durch die Programmierung mit VBA schneller mit der
Entwicklung seiner Excel-Anwendung fertig sein kann,
� die Ergebnisse für den Benutzer schneller berechnet werden können.
Es folgen einige typische Szenarien, die Ihnen zeigen sollen, wozu man VBA
nutzen kann und welche Vorteile sich daraus ergeben:
Große Daten-mengen
� Es sollen große Mengen an Daten aus einer Textdatei eingelesen werden.
Nur der Aufbau der Daten ist bekannt, nicht aber die Menge. Außerdem
sollen, abhängig vom aktuellen Inhalt der Textdatei, nur bestimmte
Daten gelesen werden. Nach dem Einlesen sollen die Daten verarbeitet,
formatiert, zusammengefasst und zur Verdeutlichung grafisch darge-
stellt werden.
Diagramme � Es soll ein Diagramm aus einer Tabelle erstellt werden. Die aktuelle
Größe und der Inhalt der Tabelle sollen die Art des Diagramms und seine
Darstellung bestimmen.
Dialogfelder � Der Benutzer soll nach Aufruf der Excel-Anwendung ein Dialogfeld vor
sich haben. Darin nimmt er, abhängig von der aktuellen Situation,
bestimmte Einstellungen vor, trifft die gewünschte Auswahl der Daten
und startet dann deren weitere Verarbeitung.
WiederkehrendeDaten
� Es ergeben sich regelmäßig (z.B. jede Woche oder jeden Monat) Daten,
die auf ähnliche (nicht identische) Art und Weise weiterverarbeitet wer-
den müssen.
1.2 MS Office 2013
19
Schrittweise Bearbeitung
� Die Verarbeitung bestimmter Daten ist komplex und muss in mehreren
Schritten erfolgen. Mit VBA kann man die Koordination und die Durch-
führung der einzelnen Schritte vereinfachen.
Excel anpassen� Dem Benutzer sollen nach Aufruf von Excel nur bestimmte Funktionali-
täten zur Verfügung stehen. Sein Excel kann durch VBA gleichzeitig
– eingeschränkt werden, wodurch es im Idealfall zu weniger Fehlbedie-
nungen kommt, und
– erweitert werden, wodurch ihm spezielle Funktionen und Abläufe zur
Verfügung stehen, die über Excel hinausgehen.
Anwendungen erweitern
� Es sollen bereits vorhandene (von anderen Entwicklern im Unterneh-
men erstellte oder eingekaufte) Excel-Anwendungen geändert werden.
Diese werden zur Bewältigung der laufenden Geschäftsprozesse bereits
regelmäßig eingesetzt. Da sich diese Prozesse geändert haben, müssen
auch die Excel-Anwendungen erweitert und angepasst werden.
In diesem Buch sollen verschiedene Möglichkeiten zur Problemlösung mit
VBA anhand von Beispielen aus der Praxis gezeigt werden. Es erhebt nicht
den Anspruch, alle Bestandteile von VBA (also alle Objekte der Objektbib-
liothek mit all ihren Eigenschaften und Methoden) aufzulisten und zu
erläutern. Dazu gibt es zu viele, und Sie würden schnell den Überblick ver-
lieren. Es wird jedoch eine umfangreiche Auswahl getroffen, die es Ihnen
ermöglicht, selbstständig mit VBA zu arbeiten.
Verständliche Beispiele
Bei den Beispielen im Buch wird eher Wert auf Verständlichkeit als auf
Komplexität gelegt. Sie sollen schnell den aktuell neuen Aspekt der Pro-
grammierung verstehen und nicht durch umfangreiche, komplizierte Bei-
spiele verwirrt werden, in denen sich nur eine kleine Neuigkeit verbirgt.
1.2 MS Office 2013
Das Paket MS Office 2013 setzt als Betriebssystem mindestens Windows 7
voraus. Für dieses Buch und die darin gezeigten Abbildungen wurde
MS Office 2013 unter Windows 8 eingesetzt.
MS Office 2013-Dateien können mit Web-Apps aus dem Office Store erwei-
tert werden. Diese Web-Apps haben Zugriff auf die Daten innerhalb einer
Office-Datei. Entwickler können diese Web-Apps mithilfe von Webtechni-
ken (HTML, JavaScript, jQuery, CSS ...) programmieren und im Office Store
1 Einführung
20
anbieten. In diesem Buch wird nur die Entwicklung von Anwendungen mit-
hilfe von VBA beschrieben.
1.3 Arbeiten mit Makros
Zu Beginn erstellen wir ein einfaches Makro. Dieses Makro soll anschlie-
ßend ausgeführt werden. Hinterher betrachten wir den Code, um einen ers-
ten Blick auf VBA werfen zu können.
SchädlicheMakros
Das Thema Makrosicherheit, also die Sicherheit vor fremden Makros, die
schädlichen Code enthalten können, spielt eine große Rolle. Diese Thema-
tik wird in Abschnitt 1.3.5, »Makrosicherheit ändern«, erläutert.
Excel-Dateien können seit Excel 2007 sowohl mit als auch ohne Makros
gespeichert werden. Darauf wird in Abschnitt 1.3.4, »Makro speichern«, ein-
gegangen.
Die in diesem Kapitel erläuterte Bedienung gilt für Excel 2013. Unter Excel
2010 bzw. Excel 2007 gibt es jeweils leichte Abweichungen in der Bedie-
nung, darauf wird an den entsprechenden Stellen jeweils gesondert hinge-
wiesen. In den Excel-Versionen vor Excel 2007 gibt es größere Abweichun-
gen in der Bedienung, die in einem eigenen Abschnitt (1.10, »Arbeiten mit
Excel vor der Version 2007«) erläutert werden.
Die weitaus meisten Beispiele in diesem Buch laufen auch unter den älte-
ren Excel-Versionen. Falls einzelne Beispiele anders oder gar nicht laufen,
wird dies an der betreffenden Stelle erläutert. Sämtliche Beispiele finden Sie
– getrennt für die Versionen vor und ab 2007 – auch auf der Buch-CD.
1.3.1 Makro aufzeichnen
Mithilfe der folgenden Beschreibung erstellen Sie ein Makro, um den Inhalt
der Zelle A1 in die Zelle C1 zu verschieben. Dazu benötigt man natürlich kein
VBA, es dient aber der ersten Verdeutlichung der Abläufe.
Makro erstellen Nun geht es los:
1. Starten Sie Excel 2013.
2. Sie haben eine leere Arbeitsmappe (Mappe1) vor sich. Tragen Sie in der
Zelle A1 einen beliebigen Inhalt (Zahl oder Text) ein (siehe Abbildung 1.1).
1.3 Arbeiten mit Makros
21
3. Klappen Sie das Menü über den nach unten weisenden Pfeil am Button
Makros auf der Registerkarte Ansicht auf.
4. Wählen Sie den Menüpunkt Makro aufzeichnen. Es erscheint das Dia-
logfeld Makro aufzeichnen (siehe Abbildung 1.2).
5. Der vorgeschlagene Makroname lautet Makro1, diesen können Sie bei-
behalten.
6. Betätigen Sie den Button OK. Ab jetzt werden alle Aktionen, die Sie aus-
führen, aufgezeichnet.
7. Wählen Sie die Zelle A1 aus.
8. Schneiden Sie die Zelle A1 aus.
9. Wählen Sie die Zelle C1 aus.
Abbildung 1.1 Zelle, deren Inhalt verschoben werden soll
Abbildung 1.2 Makro mit dem Namen »Makro1«
1 Einführung
22
10. Fügen Sie die Zelle A1 ein.
Aufzeichnungbeginnt
11. Der Inhalt der Zelle A1 wurde nach C1 verschoben (siehe Abbildung 1.3).
12. Klappen Sie wiederum das Menü über den Pfeil am Button Makros in
der Registerkarte Ansicht auf.
13. Wählen Sie den Menüpunkt Aufzeichnung beenden. Damit wird die
Aufzeichnung Ihrer Aktionen beendet.
14. Hinweis: Speichern Sie die Datei an dieser Stelle noch nicht.
Sie haben damit soeben Ihr erstes Makro erfolgreich erstellt.
Symbol zumAufzeichnen
Das Aufzeichnen geht etwas schneller, wenn Sie in der Excel-Oberfläche das
entsprechende Symbol in der Statusleiste betätigen (siehe Abbildung 1.4).
Nach Beginn der Aufzeichnung erscheint an der gleichen Stelle das Symbol
zum Beenden der Aufzeichnung in der Statusleiste (siehe Abbildung 1.5).
Abbildung 1.3 Zellen nach der Verschiebung
Abbildung 1.4 Symbol zum Starten einer Makro-Aufzeichnung
Abbildung 1.5 Symbol zum Beenden einer Makro-Aufzeichnung
1.3 Arbeiten mit Makros
23
Übung 1 A
Tragen Sie eine Zahl oder einen Text in die Zelle E3 ein. Zeichnen Sie ein
Makro auf, das den Inhalt der Zelle E3 in die Zelle E5 kopiert. Nennen Sie
das Makro KopieE3E5.
1.3.2 Makro ausführen
Makro startenDas soeben erstellte Makro soll nun ausgeführt werden. Gehen Sie dazu wie
folgt vor:
1. Tragen Sie in der Zelle A1 einen beliebigen Inhalt ein (Zahl oder Text).
2. Klappen Sie das Menü über den Pfeil unten am Button Makros auf der
Registerkarte Ansicht auf.
3. Wählen Sie den Menüpunkt Makros anzeigen.
4. Es erscheint das Dialogfeld Makro mit einer Liste der bisher erstellten
Makros. Wählen Sie in der Liste das Makro Makro1 aus.
5. Betätigen Sie den Button Ausführen.
6. Der Inhalt der Zelle A1 wurde wiederum nach C1 verschoben.
Damit haben Sie Ihr erstes Makro dann auch erfolgreich ausgeführt.
Übung 1 B
Tragen Sie einen neuen Inhalt in die Zelle E3 ein. Führen Sie das Makro
KopieE3E5 aus, und überprüfen Sie das Ergebnis auf Richtigkeit.
Name des Makros
Hinweis
Ein Makro sollte einen möglichst sprechenden Namen haben, der etwas
über seine Arbeitsweise aussagt. Es kann dann beim Aufruf leichter aus
der Liste der Makros ausgewählt werden.
1.3.3 Makro ansehen
VBA-CodeSie können sich den VBA-Code des soeben erstellten Makros ansehen, um
einen ersten Eindruck von typischem VBA zu erhalten. Gehen Sie dazu wie
folgt vor:
1. Klappen Sie das Menü über den Pfeil am Button Makros in der Register-
karte Ansicht auf.
1 Einführung
24
2. Wählen Sie den Menüpunkt Makros anzeigen.
3. Es erscheint das Dialogfeld Makro mit einer Liste der bisher erstellten
Makros. Wählen Sie in der Liste das Makro Makro1 aus.
4. Betätigen Sie den Button Bearbeiten.
Visual BasicEditor
Es erscheint der Visual Basic Editor (VBE), die eigentliche Entwicklungsum-
gebung. Auf seine einzelnen Elemente wird in Abschnitt 1.4, »Entwicklungs-
umgebung ›Visual Basic Editor‹«, eingegangen. Zunächst ist im rechten
Fenster der Code des Makros zu sehen (siehe Abbildung 1.6).
Es folgt eine kurze Erläuterung der einzelnen Zeilen. Es macht nichts, wenn
Sie noch nicht alles genau verstehen, die einzelnen Code-Elemente werden
später noch ausführlicher erläutert.
Sub ... End Sub � Der Code des Makros Makro1 ist innerhalb einer Sub-Prozedur zwischen
Sub und End Sub notiert.
Kommentar � Ein Apostroph dient dazu, eine ganze Zeile bzw. den Rest einer Zeile zu
einem Kommentar zu machen. Der Text hinter einem Apostroph dient
nur der Erläuterung des VBA-Codes. Er wird nicht ausgeführt.
� Range("A1").Select bedeutet: Es wird die Zelle A1 ausgewählt.
Cut � Selection.Cut bedeutet: Der Inhalt der aktuellen Auswahl, also der
Inhalt der Zelle A1, wird ausgeschnitten und befindet sich anschließend
in der Zwischenablage.
Abbildung 1.6 VBA-Code des Makros »Makro1«
1.3 Arbeiten mit Makros
25
� Range("C1").Select bedeutet: Die Zelle C1 wird ausgewählt, siehe oben.
Paste� ActiveSheet.Paste bedeutet: Der Inhalt der Zwischenablage wird in das
aktuell aktive Tabellenblatt eingefügt.
Der Inhalt der Zelle A1 wurde nach C1 verschoben.
Übung 1 C
Interpretieren Sie den VBA-Code des Makros KopieE3E5:
Sub KopieE3E5()Range("E3").SelectSelection.CopyRange("E5").SelectActiveSheet.Paste
End Sub
Listing 1.1 Sub KopieE3E5 in Mappe1.xlsm, Modul 2
Schließen Sie den Visual Basic Editor über das Menü Datei • Schliessen
und zurück zu Microsoft Excel. Es erscheint die Excel-Oberfläche.
1.3.4 Makro speichern
Excel-Dateien können seit Excel 2007 sowohl mit Makros als auch ohne
Makros gespeichert werden.
Dateiendung xlsxRufen Sie in Excel 2013 das Menü Datei auf und darin den Menüpunkt
Speichern. Auf der rechten Seite wählen Sie nacheinander die Buttons
Computer und Durchsuchen. Es erscheint das Dialogfeld Speichern
unter.
In Excel 2010 erscheint das Dialogfeld Speichern unter direkt nach Aus-
wahl des Menüpunktes Speichern im Menü Datei. In Excel 2007 er-
scheint das Dialogfeld Speichern unter nach Auswahl der Schaltfläche
Office und des Menüpunktes Speichern.
Als Dateityp ist im Dialogfeld Speichern unter angegeben: Excel-
Arbeitsmappe mit der Dateiendung .xlsx (siehe Abbildung 1.7).
Falls Sie nun den Button Speichern betätigen, erscheint der Hinweis, dass
die in dieser Datei enthaltenen Makros bei diesem Dateityp nicht mitge-
speichert werden (siehe Abbildung 1.8). Sie würden also verloren gehen.
1 Einführung
26
Dateiendung xlsm Zur Speicherung mit Makros sollten Sie daher den Button Nein betätigen,
im Dialogfeld Speichern unter als Dateityp die Option Excel-Arbeits-
mappe mit Makros mit der Dateiendung .xlsm auswählen und anschlie-
ßend mit dem gewünschten Namen im gewünschten Verzeichnis
speichern, z.B. C:\Temp\Mappe1.xlsm (siehe Abbildung 1.9).
Nachdem die Datei erfolgreich mit Makros gespeichert wurde, können Sie
Excel jetzt schließen.
1.3.5 Makrosicherheit ändern
Starten Sie Excel erneut. Falls Sie nun die soeben gespeicherte Datei erneut
öffnen, stoßen Sie unweigerlich auf das Thema Makrosicherheit. Was
bedeutet das?
Sicherheits-warnung
Excel 2013 (wie auch die Vorgängerversionen) möchte Sie davor bewahren,
möglicherweise schädlichen VBA-Code auszuführen. Unterhalb der Multi-
Abbildung 1.7 Speichern als Arbeitsmappe ohne Makros
Abbildung 1.8 Warnung, dass enthaltene Makros nicht mitgespeichert werden
Abbildung 1.9 Speichern als Arbeitsmappe mit Makros
1.3 Arbeiten mit Makros
27
funktionsleiste erscheint daher eine Sicherheitswarnung mit dem Hinweis,
dass die in dieser Datei enthaltenen Makros deaktiviert wurden (siehe
Abbildung 1.10).
Makros deaktiviert
Diese Reaktion erfolgt aufgrund der folgenden Standardeinstellung für die
Makrosicherheit in Excel: Alle Makros mit Benachrichtigung deaktivieren.
Falls Sie versuchen, ein Makro auszuführen, erscheint die Information, dass
dies nicht möglich ist (siehe Abbildung 1.11).
Aktivieren von Makros
Abbildung 1.11 Hinweis: Makro-Ausführung nicht möglich
Sie haben die Möglichkeit, die in dieser Datei enthaltenen Makros zu akti-
vieren. Damit wird seit Excel 2010 die Datei in die Liste der vertrauenswür-
digen Dokumente aufgenommen, unter Excel 2007 werden die Makros in
dieser Datei einmalig aktiviert. Dazu führen Sie Folgendes durch:
1. Schließen Sie die Datei.
2. Öffnen Sie sie erneut.
3. Unter Excel 2013 bzw. 2010 betätigen Sie den Button Inhalt aktivie-
ren (neben der Sicherheitswarnung, siehe Abbildung 1.10).
4. Unter Excel 2007 betätigen Sie den Button Optionen und wählen
anschließend die Option Diesen Inhalt aktivieren.
Abbildung 1.10 Sicherheitswarnung »Makros wurden deaktiviert.«
1 Einführung
28
Anschließend verschwindet die Sicherheitswarnung, und Sie können
Makros ausführen. Unter Excel 2007 erscheint die Sicherheitswarnung
allerdings beim nächsten Öffnen der Datei wieder. Man kann auch alle
Excel-Dateien in einem Verzeichnis für dauerhaft vertrauenswürdig erklä-
ren, siehe Abschnitt 1.3.7, »Makrosicherheit dauerhaft ändern«.
1.3.6 Registerkarte »Entwicklertools«
Excel-Optionen Die Registerkarte Entwicklertools bietet weitergehende Möglichkeiten
zur Erstellung und Verwaltung von Makros. Daher sollten Sie sie dauerhaft
in Excel einblenden.
Unter Excel 2013 und Excel 2010 rufen Sie dazu das Menü Datei auf und be-
tätigen die Schaltfläche Optionen. Im Dialogfeld Excel-Optionen betäti-
gen Sie die Schaltfläche Menüband anpassen. Auf der rechten Seite mar-
kieren Sie die Hauptregisterkarte Entwicklertools (siehe Abbildung 1.12).
Unter Excel 2007 betätigen Sie die Schaltfläche Office und dort den Button
Excel-Optionen. In der Kategorie Häufig verwendet aktivieren Sie
Entwicklerregisterkarte in der Multifunktionsleiste anzeigen.
Abbildung 1.12 Registerkarte »Entwicklertools« einblenden
1.3 Arbeiten mit Makros
29
EntwicklertoolsAnschließend ist die Registerkarte dauerhaft aktiviert (siehe Abbildung 1.13).
1.3.7 Makrosicherheit dauerhaft ändern
Klicken Sie auf der Registerkarte Entwicklertools den Button Makro-
sicherheit an (siehe Abbildung 1.14).
Trust CenterUnter Excel 2013 öffnet sich anschließend das Dialogfeld Trust Center.
Unter Excel 2010 heißt dieses Dialogfeld Sicherheitscenter, unter Excel
2007 heißt es Vertrauenscenter. Nach Auswahl der Kategorie Makro-
einstellungen bzw. Einstellungen für Makros sehen Sie die Standard-
einstellung: Alle Makros mit Benachrichtigung deaktivieren (siehe
Abbildung 1.15). Außerdem sehen Sie die verschiedenen Möglichkeiten zur
Einstellung.
Vertrauenswür-diger Speicherort
Die folgende Möglichkeit ist allerdings besser geeignet: Nach Auswahl der
Kategorie Vertrauenswürdige Speicherorte (siehe Abbildung 1.15 für
Excel 2013) sehen Sie eine Liste der vertrauenswürdigen Verzeichnisse. Die
Makros in den hier gelisteten Verzeichnissen können immer ausgeführt
werden.
Abbildung 1.13 Registerkarte »Entwicklertools«
Abbildung 1.14 Button »Makrosicherheit«
1 Einführung
30
EigenerSpeicherort
Falls Sie also in Zukunft alle Ihre Excel-Dateien mit Makros in einem
bestimmten Verzeichnis (gegebenenfalls inklusive dessen Unterverzeich-
nisse) speichern, dann können Sie dieses Verzeichnis zu der Liste hinzufü-
gen. Dazu betätigen Sie den Button Neuen Speicherort hinzufügen. Es
erscheint ein Dialogfeld, in dem Sie die gewünschten Eingaben vornehmen
können (siehe Abbildung 1.16).
Anschließend ist die Liste der vertrauenswürdigen Speicherorte um ein Ele-
ment ergänzt (siehe Abbildung 1.17).
Abbildung 1.15 Trust Center
Abbildung 1.16 Vertrauenswürdiges Verzeichnis
Abbildung 1.17 Liste der vertrauenswürdigen Verzeichnisse
1.4 Entwicklungsumgebung Visual Basic Editor
31
1.4 Entwicklungsumgebung Visual Basic Editor
Tasten Alt + F11Es gibt mehrere Wege, den Visual Basic Editor (VBE), die Entwicklungsum-
gebung, aufzurufen, in der man den VBA-Code schreibt. Wie bereits erläu-
tert, gelangen Sie über den Button Makros auf der Registerkarte Ansicht
oder der Registerkarte Entwicklertools dorthin. Außerdem können Sie
den VBE von der Excel-Oberfläche mit der Tastenkombination (Alt)+(F11)
aufrufen. Mit der gleichen Tastenkombination können Sie auch wieder
vom VBE zur Excel-Oberfläche zurückwechseln. Dies wird in der Praxis häu-
fig durchgeführt.
1.4.1 Menüleiste und Symbolleiste
Symbolleiste »Bearbeiten«
Im oberen Teil des VBEs befinden sich eine Menüleiste und die Symbol-
leiste Voreinstellung. Nützlich für die Programmierung ist auch die
Symbolleiste Bearbeiten, die Sie über das Menü Ansicht • Symbolleis-
ten einblenden können. Beide Symbolleisten sehen Sie in Abbildung 1.18.
Deklaration erzwingen
Nehmen Sie zu Beginn bitte eine Voreinstellung vor, die für die VBA-Pro-
grammierung wichtig ist: Im Menü Extras • Optionen • Registerkarte
Editor setzen Sie ein Häkchen bei Variablendeklaration erforder-
lich (siehe Abbildung 1.19).
Verbesserung des Programms
Abbildung 1.19 Einstellung »Variablendeklaration erforderlich«
Abbildung 1.18 Symbolleisten »Voreinstellung« und »Bearbeiten«
1 Einführung
32
Option Explicit Dies sorgt ab dem nächsten Öffnen von Excel dafür, dass in jedem Modul
oberhalb des VBA-Codes die Zeile Option Explicit steht und alle Variablen
deklariert werden müssen.
Damit wird in Ihrem VBA-Code automatisch darauf geachtet, dass Sie alle
Variablen explizit deklarieren. Dies kann zur Verminderung von Fehlern
und zur Verbesserung der Performance Ihrer Programme beitragen. Vari-
ablen dienen der Speicherung von Zahlen, Daten und Texten, die im späte-
ren Verlauf eines Programms noch benötigt werden. Dazu mehr in Kapitel 3,
»Grundlagen der Programmierung mit VBA«.
1.4.2 Projekt-Explorer und Eigenschaften-Fenster
Auf der linken Seite des VBEs befinden sich der Projekt-Explorer und das
Fenster Eigenschaften (siehe Abbildung 1.20).
Projekt-Explorer Im Projekt-Explorer werden die Elemente der aktuell geöffneten Dateien
angezeigt, in denen man mit VBA programmieren kann. Dies sind:
Modul � eigene Codemodule, wie z.B. das Modul1, das durch die Aufzeichnung
eines Makros automatisch erzeugt wurde. Ein eigenes, leeres Modul
kann auch über das Menü Einfügen • Modul erzeugt werden.
Abbildung 1.20 Projekt-Explorer und Eigenschaften-Fenster
1.4 Entwicklungsumgebung Visual Basic Editor
33
Klassenmodul� vorhandene Klassenmodule, wie DieseArbeitsmappe und Tabelle1 bis
Tabelle3, also die gesamte Arbeitsmappe und die aktuell vorhandenen
Tabellen. Hier kann VBA-Code notiert werden, der bei Eintritt bestimm-
ter Ereignisse, wie z. B. Öffnen einer Arbeitsmappe, automatisch ausge-
führt wird.
� eigene Klassenmodule zur objektorientierten Programmierung, die Sie
über das Menü Einfügen • Klassenmodul erzeugen können
UserForm� UserForms, also eigene Dialogfelder zur komfortablen Programmsteue-
rung, die sich über das Menü Einfügen • UserForm erzeugen lassen
Für uns sind zunächst nur die eigenen Codemodule wichtig. Die VBA-Bei-
spiele in diesem Buch werden in Codemodulen gespeichert, falls kein
anderslautender Hinweis erfolgt. Falls Code in UserForms oder eigenen
Klassenmodulen gespeichert wird, so ist dies explizit angegeben. Der VBA-
Code in Klassenmodulen bezieht sich normalerweise nur auf das jeweilige
Klassenmodul. Per Doppelklick auf ein Element im Projekt-Explorer wird
der VBA-Code des betreffenden Moduls eingeblendet.
Übung 1 D
Blenden Sie den VBA-Code der verschiedenen Elemente ein.
Eigenschaftenund Werte
Im Fenster Eigenschaften werden die Eigenschaften des aktuell ausge-
wählten Moduls bzw. die Eigenschaften des ausgewählten Steuerelements
eines eigenen Dialogfeldes aufgelistet. Die Werte dieser Eigenschaften kön-
nen verändert werden. Ein Modul wird durch einen einfachen Klick im Pro-
jekt-Explorer ausgewählt. Zunächst ist das Fenster Eigenschaften für uns
nicht wichtig.
1.4.3 Codefenster
Code ausführenAuf der rechten Seite des VBEs befindet sich das bereits bekannte Codefens-
ter mit dem VBA-Code. Sie können eines der Makros von hier aus direkt
ausführen. Setzen Sie dazu den Cursor in die betreffende Prozedur.
Anschließend können Sie entweder
� im Menü Ausführen den Menüpunkt Sub/UserForm ausführen
aufrufen oder
Taste F5� die Taste (F5) betätigen oder
1 Einführung
34
� in der Symbolleiste Voreinstellung das Symbol mit dem grünen Pfeil,
der nach rechts weist, betätigen (siehe Abbildung 1.21).
Übung 1 E
Testen Sie auf diese Weise die beiden vorhandenen Makros. Das Ergebnis
sehen Sie natürlich nur in der Excel-Oberfläche. Sie müssen also (z.B. mit-
hilfe der Tastenkombination (Alt)+(F11)) zwischen Excel-Oberfläche und
VBE hin- und herwechseln.
Zur Erinnerung
Ein Apostroph im VBA-Code dient dazu, eine ganze Zeile bzw. den Rest
einer Zeile hinter dem Apostroph zu einem Kommentar zu machen.
Übung 1 F
Fügen Sie Ihren beiden Makros jeweils eine Kommentarzeile hinzu mit
dem Text: Dieses Makro wurde von [Ihr Name] erstellt. Testen Sie Ihre
Makros erneut.
1.5 Makrocode verstehen und ändern
Im nächsten Schritt sollen Sie Ihre eigenen Makros verändern. Dazu müs-
sen wir ihren Code etwas näher betrachten, zunächst am Beispiel von
Makro1:
Sub Makro1()Range("A1").SelectSelection.CutRange("C1").SelectActiveSheet.Paste
End Sub
Listing 1.2 Sub Makro1 in Mappe1.xlsm, Modul 1
Abbildung 1.21 Symbol »Sub/UserForm ausführen« (Taste F5)
1.5 Makrocode verstehen und ändern
35
Zur Erläuterung:
Sub ... End Sub� Der Code der Makros ist jeweils innerhalb einer Sub-Prozedur zwischen
Sub und End Sub notiert. Die einzelnen Zeilen werden der Reihe nach
durchlaufen und ausgeführt.
Range� Range("A1").Select bedeutet: Für einen (Zell-)Bereich (engl. range) wird
etwas durchgeführt. In diesem Fall wird der Bereich ausgewählt (engl.
select). Der Bereich umfasst hier nur die Zelle A1. Er kann auch mehrere
Zellen umfassen.
Cut� Selection.Cut bedeutet: Für die vorher getroffene Auswahl (engl. selec-
tion) wird etwas durchgeführt. In diesem Fall wird die Auswahl ausge-
schnitten (engl. cut). Es wurde also der Inhalt der Zelle A1 ausgeschnitten.
Dieser Inhalt befindet sich nun in der Zwischenablage.
Im anderen Makro (KopieE3E5) wird auf ähnliche Art und Weise mit
Selection.Copy die vorher getroffene Auswahl in die Zwischenablage
kopiert.
� Range("C1").Select erklärt sich nun von selbst.
Paste� ActiveSheet.Paste bedeutet: Für das aktuell aktive Tabellenblatt (engl.
sheet) wird etwas durchgeführt. In diesem Fall wird der Inhalt der Zwi-
schenablage eingefügt (engl. paste). Dies wird an der vorher ausgewähl-
ten Stelle (Zelle C1) vorgenommen.
Hinweis
Active...Mit dem Präfix »Active« wird immer das aktuell aktive Element bezeich-
net, wie z.B. ActiveCell (Zelle), ActiveSheet (Tabellenblatt) oder Active-Workbook (Arbeitsmappe).
Durch den Eintrag von D1 statt C1 als Zielzelle können Sie den Code leicht
verändern. Anschließend wird der Inhalt der Zelle A1 zur Zelle D1 verscho-
ben.
Übung 1 G
Verändern Sie das Makro KopieE3E5 aus Übung 1 A (siehe Abschnitt 1.3.1,
»Makro aufzeichnen«). Es soll der Inhalt der Zellen E3 bis G3 sowohl in die
Zellen E5 bis G5 als auch in die Zellen E10 bis G10 kopiert werden. Nennen
Sie das geänderte Makro KopieE3E5Neu.
1 Einführung
36
Hinweise dazu:
� Ein Zellbereich aus mehreren Zellen wird genau wie in Excel notiert,
also z.B. E3:G3.
� Für eine Zielangabe reicht die Angabe einer einzelnen Zelle aus; die wei-
teren Zellen des kopierten Bereichs werden, wie aus Excel gewohnt, in
die Nachbarzellen eingefügt.
� Aus der Zwischenablage können beliebig viele Kopien eingefügt werden.
Hinweis
Aktivieren undselektieren
In den genannten Beispielen werden Quellbereiche selektiert und Zielbe-
reiche aktiviert. Dadurch erhält man als VBA-Neuling einen leicht ver-
ständlichen Einstieg, weil der Code die gleichen Schritte ausführt wie der
Benutzer in der Excel-Oberfläche.
Es wird aber mehr Code als notwendig erzeugt. Die Wartung solchen
Codes dauert länger, und die Ausführung ist langsamer. Im weiteren Ver-
lauf dieses Buches werden Sie lernen, wie man besseren Code erstellt.
1.6 Makro per Schaltfläche ausführen
Button einfügen Sie können als Entwickler dem Benutzer das Starten eines Makros erleich-
tern, indem Sie ihm eine Schaltfläche (engl. button) zur Verfügung stellen.
So können Sie ein übersichtlich zu bedienendes Tabellenblatt mit Daten,
Formeln und Programmen zur Verfügung stellen.
Zur Erzeugung eines Buttons gehen Sie wie folgt vor:
1. Auf der Registerkarte Entwicklertools betätigen Sie den Button Ein-
fügen.
2. Es erscheint eine Sammlung von Steuerelementen; darin wählen Sie das
Symbol links oben: Schaltfläche (Formular-Steuerelement).
3. Platzieren Sie den Mauscursor an der gewünschten Stelle auf dem Tabel-
lenblatt. Es erscheint ein kleines Kreuz. Drücken Sie die linke Maustaste,
halten Sie sie gedrückt, und ziehen Sie die Schaltfläche in der gewünsch-
ten Größe auf.
Makro und But-ton verbinden
4. Es erscheint das Dialogfeld Makro zuweisen (siehe Abbildung 1.22).
Suchen Sie das gewünschte Makro heraus, und bestätigen Sie mit OK.
1.7 Relative Aufzeichnung
37
Anschließend erscheint der Button im Bearbeitungsmodus. Klicken Sie ein-
mal neben den Button; anschließend können Sie durch Klick auf den But-
ton das Makro ausführen (siehe Abbildung 1.23).
Hinweis
Button bearbeitenSie können einen Button nachträglich bearbeiten. Dazu klicken Sie mit der
rechten Maustaste auf den Button, dann sind Sie wieder im Bearbeitungs-
modus. Sie können nun Größe und Ort verändern. Über das Kontextmenü
(wiederum Rechtsklick) können Sie ein anderes Makro zuweisen oder den
Text auf dem Button verändern.
1.7 Relative Aufzeichnung
Beim Aufzeichnen der Makros ist Ihnen sicherlich schon der Begriff Rela-
tive Aufzeichnung aufgefallen. Dabei handelt es sich um einen Schalter,
den Sie an zwei Stellen betätigen können:
� in dem Menü, das über den Button Makros auf der Registerkarte
Ansicht erreicht werden kann
� auf der Registerkarte Entwicklertools
Abbildung 1.22 Makro einem Button zuordnen
Abbildung 1.23 Neu eingefügter Button
1 Einführung
38
Schalter Falls dieser Schalter eingeschaltet wird, werden nachfolgende Makros rela-
tiv aufgezeichnet. Bei den bisher erstellten Makros war dieser Schalter nicht
eingeschaltet, diese Makros wurden daher absolut aufgezeichnet.
Absolutaufzeichnen
� Absolute Aufzeichnung bedeutet, dass im Makrocode absolute Zellanga-
ben stehen (Beispiel: A1, C1). Bei der Ausführung eines solchen Makros ist
es egal, welche Zelle in Excel aktiv ist, es wird immer mit den Zellen A1
und C1 gearbeitet.
Relativaufzeichnen
� Relative Aufzeichnung bedeutet, dass im Makrocode relative Zellanga-
ben stehen. Bei der Ausführung eines solchen Makros werden die Aktio-
nen relativ zu der Zelle ausgeführt, die in Excel aktiv ist.
Zur Verdeutlichung soll ein Makro aufgezeichnet werden, in dem das Glei-
che gemacht wird wie im ersten Beispielmakro: Der Inhalt der Zelle A1 wird
nach C1 verschoben. Allerdings wird das Makro relativ aufgezeichnet. Füh-
ren Sie folgende Schritte durch:
1. Aktivieren Sie in Excel die Relative Aufzeichnung.
2. Tragen Sie in der Zelle A1 einen beliebigen Inhalt ein (Zahl oder Text).
3. Wählen Sie die Zelle A1 aus.
4. Beginnen Sie mit der Aufzeichnung des Makros (Name Makro2).
5. Schneiden Sie den Inhalt der Zelle A1 aus.
6. Fügen Sie den Inhalt der Zwischenablage in der Zelle C1 ein. Der Inhalt
der Zelle A1 wurde nach C1 verschoben.
7. Beenden Sie die Makro-Aufzeichnung.
RelativeVerschiebung
Soweit ist noch kein sichtbarer Unterschied aufgetreten. Falls Sie nun aller-
dings das Makro ausführen, so wird jeweils der Inhalt der aktuell ausge-
wählten Zelle um zwei Zellen nach rechts verschoben (z.B. von D10 nach
F10) und nicht immer der Inhalt der Zelle A1 nach C1.
Die aktive Zelle ist nun der Ausgangspunkt. Betrachten wir den Code:
Cut � Selection.Cut: Es geschieht das Gleiche wie bei der absoluten Aufzeich-
nung, also der Inhalt der aktiven Zelle wird ausgeschnitten. Er liegt nun
in der Zwischenablage.
Offset � ActiveCell.Offset(0, 2).Range("A1").Select: Ausgehend von der akti-
ven Zelle wird ein Offset (also ein Versatz) ausgewählt. Die Angaben in
Klammern stehen für Zeile und Spalte des Versatzes. Es wird also eine
Zelle in der gleichen Zeile (Offset-Zeile 0) und zwei Spalten weiter rechts
1.8 Persönliche Makroarbeitsmappe
39
(Offset-Spalte 2) ausgewählt. Falls die aktive Zelle D10 ist, dann wird dem-
nach die Zelle F10 ausgewählt.
Zu diesem Versatz wird der Bereich A1 ausgewählt. Dies ist nicht die
absolute Zelle A1 des Tabellenblattes, sondern die oberste linke Zelle des
Versatzes. Diese Zelle (gleiche Zeile, zwei Zellen nach rechts) wird ausge-
wählt.
Paste� ActiveSheet.Paste: Es geschieht das Gleiche wie bei der absoluten Auf-
zeichnung, also der Inhalt der Zwischenablage wird eingefügt.
Dieses Makro zeigt ein ganz anderes Verhalten als das Makro, das absolut
aufgezeichnet wurde. Beide Makro-Aufzeichnungsarten haben ihre Vor-
teile, je nach Situation.
Hinweis
Nach dem Schließen und erneuten Öffnen von Excel steht der Schalter
immer auf absolute Aufzeichnung. Sie können während einer Aufzeich-
nung über den Schalter zwischen relativer und absoluter Aufzeichnung
wechseln, falls dies notwendig sein sollte.
Übung 1 H
Erstellen Sie ein Makro, das den Inhalt von drei nebeneinanderliegenden,
markierten Zellen um zwei Zeilen bzw. um sieben Zeilen nach unten
kopiert. Es entspricht dem Makro aus der Übung 1 G (siehe Abschnitt 1.5,
»Makrocode verstehen und ändern«), allerdings mit relativer Aufzeich-
nung. Nennen Sie das Makro RelKopie. Testen Sie es, und interpretieren Sie
den VBA-Code.
1.8 Persönliche Makroarbeitsmappe
Makros überall benutzen
Die bisher aufgezeichneten Makros wurden in der aktuell aktiven Arbeits-
mappe gespeichert. Daher stehen sie nur dort zur Verfügung. Falls Sie
bestimmte Makros für den universellen Einsatz immer zur Verfügung
haben möchten, so sollten Sie sie in der Persönlichen Makroarbeitsmappe
speichern. Dabei handelt es sich um eine Arbeitsmappe, die immer zusam-
men mit Excel geöffnet wird, sobald sie existiert.
Zum Speichern eines Makros in der Persönlichen Makroarbeitsmappe
muss beim Aufzeichnen eines Makros im Dialogfeld Makro aufzeich-
1 Einführung
40
nen der entsprechende Eintrag in der Liste Makro speichern in ausge-
wählt werden (siehe Abbildung 1.24).
Dateipersonal.xlsb
Nach der Aufzeichnung erscheint ein weiterer Eintrag im Projekt-Explorer
des VBEs, die Datei personal.xlsb (siehe Abbildung 1.25). Ihr Standardspei-
cherort ist seit Windows Vista das (eventuell versteckte) Verzeichnis C:\
Benutzer\[ Benutzername ]\AppData\Roaming\Microsoft\Excel\XLStart
und unter XP C:\Dokumente und Einstellungen\[ Benutzername ]\Anwen-
dungsdaten\Microsoft\Excel\XLStart.
Makros immerverfügbar
Falls diese Datei verändert wurde, indem z.B. ein Makro hinzugefügt oder
geändert wurde, werden Sie bei jedem Schließen von Excel gefragt, ob Sie
diese Änderungen speichern möchten. Nach jedem Öffnen von Excel ste-
hen die Makros in dieser Datei zur Verfügung.
Abbildung 1.24 Speichern in Persönlicher Makroarbeitsmappe
Abbildung 1.25 Persönliche Makroarbeitsmappe im Projekt-Explorer
1.9 Code schreiben, einfache Ausgabe
41
Übung 1 I
Erstellen Sie das gleiche Makro wie in der letzten Übung, 1 H, speichern Sie
es aber diesmal in der Persönlichen Makroarbeitsmappe. Schließen Sie
Excel. Testen Sie das Makro nach dem erneuten Öffnen von Excel in einer
beliebigen Arbeitsmappe.
1.9 Code schreiben, einfache Ausgabe
Selbst programmieren
In diesem Abschnitt wird erstmalig VBA-Code nicht durch eine Makro-Auf-
zeichnung, sondern durch Schreiben des Codes in einer eigenen Sub-Proze-
dur erstellt. Es entsteht also das erste richtige VBA-Programm. Außerdem
werden drei Möglichkeiten zur Ausgabe von Ergebnissen oder Kontrollwer-
ten genannt, die häufig in der VBA-Programmierung benutzt werden:
� Ausgabe in einer Zelle
� Ausgabe in einer Nachrichtenbox
� Ausgabe im Direktfenster des VBEs
1.9.1 Eigene Sub-Prozedur
Zunächst zur Erstellung einer eigenen Sub-Prozedur. Wechseln Sie mit den
Tasten (Alt)+(F11) zum VBE. Schreiben Sie unterhalb des letzten Makros
die folgende Zeile:
Sub AusgabeZelle
Unterstützung durch Editor
Sobald Sie mit der Taste (¢) die Zeile wechseln, stellen Sie fest, dass der Edi-
tor Sie bei der VBA-Programmierung unterstützt (siehe Abbildung 1.26):
� Am Ende der Zeile werden Klammern angefügt.
� Es wird die Zeile mit End Sub erzeugt.
� Der Cursor steht in der Zeile dazwischen, bereit zur Eingabe Ihres VBA-
Codes.
� Es wird eine Trennzeile zwischen den einzelnen Makros erzeugt.
Der Editor bietet dem Programmierer noch umfangreiche weitere Unter-
stützung, aber dazu später.
1 Einführung
42
Prozedurname (...) Hinter dem Namen einer Sub-Prozedur (oder kurz Prozedur) stehen immer
Klammern, wie auch bei Ihren bisherigen Makros. Diese Klammern sind
zunächst leer. Später werden wir sehen, dass man innerhalb der Klammern
Aufrufparameter notieren kann, die eine Prozedur flexibler machen kön-
nen.
1.9.2 Ausgabe in Zelle
Geben Sie in der Prozedur AusgabeZelle() folgende Codezeile ein:
Range("A1").Value = "Hallo"
Damit sieht Ihre Prozedur wie folgt aus:
Sub AusgabeZelle()Range("A1").Value = "Hallo"
End Sub
Listing 1.3 Sub AusgabeZelle in Mappe1.xlsm, Modul 1
Bei Ausführung dieser Prozedur, z. B. mithilfe der Taste (F5), wird der Text
Hallo in der Zelle A1 ausgegeben (siehe Abbildung 1.27).
Eigenschaft»Value«
Sie haben bereits gesehen, dass Sie einen Bereich, der eine oder mehrere
Zellen umfasst, über Range ansprechen können. Wir haben bereits die
Methode Select aufgerufen, um diesen Bereich auszuwählen. Diesmal wird
die Eigenschaft Value mit einem Eigenschaftswert versehen, dem Text
Hallo. Über Value erhält die Zelle einen Wert.
Abbildung 1.26 Neue eigene Sub-Prozedur
Abbildung 1.27 Ergebnis der eigenen Sub-Prozedur
1.9 Code schreiben, einfache Ausgabe
43
Hinweis
Eine Prozedur sollte einen möglichst sprechenden Namen haben, der
etwas über ihre Arbeitsweise aussagt. Außerdem muss der Name inner-
halb der Anwendung eindeutig sein. Es darf also kein Prozedurname dop-
pelt vorkommen.
1.9.3 Ausgabe in Nachrichtenbox
Schreiben Sie eine weitere Prozedur mit folgendem Code:
Sub AusgabeBox()MsgBox "Hallo"
End Sub
Listing 1.4 Sub AusgabeBox in Mappe1.xlsm, Modul 1
Nach dem Aufruf erscheint eine kleine Nachrichtenbox mit dem Text Hallo
(siehe Abbildung 1.28).
MsgBoxEine solche Nachrichtenbox können Sie u. a. benutzen zur:
� Kontrollausgabe während der Programmierung
� Information des Benutzers bei einem Fehler
� Information des Benutzers am Ende eines Programms
Bei MsgBox handelt es sich um eine vorgefertigte Funktion, bei der Sie eine
Zeichenkette, z.B. einen Text in Anführungsstrichen, als Aufruf-Parameter
notieren müssen. Die Funktion MsgBox kann allerdings wesentlich mehr,
wie Sie in Abschnitt 8.3, »Einfacher Dialog mit dem Benutzer«, sehen wer-
den.
Abbildung 1.28 Ausgabe in Nachrichtenbox
1 Einführung
44
vbCrLf Bei längeren Ausgaben wird häufig ein Zeilenumbruch benötigt. Dieser
wird über die Konstante vbCrLf bereitgestellt. Ein Beispiel:
Sub AusgabeBoxZeilenumbruch()MsgBox "Hallo" & vbCrLf & "Welt"
End Sub
Listing 1.5 Sub AusgabeBoxZeilenumbruch in Mappe1.xlsm, Modul 1
Die Ausgabe sehen Sie in Abbildung 1.29.
Den Namen dieser Konstanten kann man sich leicht merken, denn es
handelt sich dabei um ein Relikt aus der Urzeit: In vbCrLf steht das Cr für
Carriage Return, den Wagenrücklauf der Schreibmaschine zum Zeilen-
anfang. Das Lf steht für Line Feed, den Zeilenvorschub.
Operator & Hinweis
Der Operator & dient der Verkettung von Zeichenfolgen. Er wird häufig
benötigt, um Ergebnisse anschaulich zusammen mit Text darzustellen.
1.9.4 Ausgabe im Direktfenster des VBEs
Schreiben Sie eine weitere Prozedur mit folgendem Code:
Sub AusgabeKontrolle()Debug.Print "Hallo"
End Sub
Listing 1.6 Sub AusgabeKontrolle in Mappe1.xlsm, Modul 1
Debug.Print Nach dem Aufruf erscheint zunächst gar nichts, da das Direktfenster des
VBEs nicht eingeblendet ist. Zeigen Sie es über das Menü Ansicht •
Abbildung 1.29 Ausgabe mit Zeilenumbruch
1.10 Arbeiten mit Excel vor der Version 2007
45
Direktfenster im VBE an. Anschließend sehen Sie die soeben erzeugte
Ausgabe (siehe Abbildung 1.30).
Das Direktfenster (= Direktbereich) können Sie ebenfalls zur Kontroll-
ausgabe während der Programmierung nutzen.
1.10 Arbeiten mit Excel vor der Version 2007
Zunächst das Wichtigste: Excel-Dateien werden in den Versionen vor Excel
2007 einheitlich mit der Dateiendung .xls gespeichert, unabhängig davon,
ob sie Makros enthalten oder nicht.
Die weitaus meisten Beispiele in diesem Buch laufen auch unter Versionen
vor Excel 2007. Auf dem Datenträger, der diesem Buch beiliegt, stehen die
Dateien zusätzlich im xls-Format für Versionen vor Excel 2007 zur Verfü-
gung.
Als Beispiel für die Arbeit mit den Versionen vor Excel 2007 (genauer Excel 97
bis Excel 2003) soll in diesem Abschnitt Excel 2002 dienen. Es werden nur
die Unterschiede zu Excel 2013 erläutert, in Anlehnung an die Reihenfolge
der bisherigen Abschnitte.
1.10.1 Makro aufzeichnen
Zum Starten einer Aufzeichnung wählen Sie im Menü Extras das Unter-
menü Makro, darin den Menüpunkt Aufzeichnen. Zum Beenden der
Aufzeichnung wählen Sie im Menü Extras das Untermenü Makro, darin
den Menüpunkt Aufzeichnung beenden.
Nach dem Start einer Aufzeichnung erscheint die kleine Symbolleiste Auf-
zeichnung beenden. Sollte sie nicht von selbst erscheinen, so kann sie
Abbildung 1.30 Ausgabe im Direktfenster
1 Einführung
46
auf die übliche Art eingeblendet werden: rechte Maustaste im Bereich der
Symbolleisten klicken und Häkchen vor der betreffenden Symbolleiste set-
zen. Sie beinhaltet zwei Symbole:
� Mit Betätigung des linken Symbols können Sie die Aufzeichnung eben-
falls beenden.
� Mit Betätigung des rechten Symbols können Sie auf relative Aufzeich-
nung umschalten. Diese Einstellung gilt auch für nachfolgende Makro-
Aufzeichnungen.
1.10.2 Makro ausführen
Zum Ausführen des Makros wählen Sie im Menü Extras das Untermenü
Makro und darin den Menüpunkt Makros. Wählen Sie im Dialogfeld
Makro das gewünschte Makro aus, und klicken Sie auf den Button Aus-
führen.
1.10.3 Makro ansehen
Zum Ansehen des Makros wählen Sie im Menü Extras das Untermenü
Makro und darin den Menüpunkt Makros. Wählen Sie im Dialogfeld
Makro das gewünschte Makro aus, und klicken Sie auf den Button Bear-
beiten. Es erscheint der Visual Basic Editor. Sie können ihn über den Menü-
punkt Schließen und zurück zu Microsoft Excel im Menü Datei
wieder schließen.
1.10.4 Makro speichern
Wie bereits erwähnt, werden Excel-Dateien in diesen Versionen einheitlich
gespeichert, unabhängig davon, ob sie Makros enthalten oder nicht.
Zum Speichern der Datei wählen Sie im Menü Datei den Menüpunkt Spei-
chern. Es erscheint das Dialogfeld Speichern unter. Als Dateityp ist
Excel-Arbeitsmappe mit der Dateiendung .xls angegeben. Wählen Sie
den gewünschten Dateinamen und das gewünschte Verzeichnis aus, und
klicken Sie auf den Button Speichern.
Dateityp ändern Falls Sie an einem externen PC Excel 2013 bzw. Excel 2010 oder Excel 2007
zur Verfügung haben und eine dort erstellte Excel-Datei auf Ihrem PC unter
1.10 Arbeiten mit Excel vor der Version 2007
47
einer Version vor Excel 2007 haben wollen, rufen sie auf dem externen PC
das Dialogfeld Speichern unter auf und wählen den Dateityp Excel-97-
2003-Arbeitsmappe mit der Dateiendung .xls.
Kompatibilitäts-prüfung
Falls sich in der Datei VBA-Code befindet, der nicht unter älteren Excel-Ver-
sionen ausgeführt werden kann, so erscheint das Dialogfeld Kompatibili-
tätsprüfung. Darin wird das Problem genauer erläutert.
1.10.5 Makrosicherheit
Beim Öffnen einer Datei, die ein Makro beinhaltet, kommt es darauf an,
welche Sicherheitsstufe in Excel eingestellt ist:
� Hoch: Die Ausführung von nicht signierten Makros wird abgelehnt.
� Mittel: Es wird Ihnen die Möglichkeit gegeben, die Makros in dieser
Datei einmalig zu aktivieren oder zu deaktivieren.
� Niedrig: Die Ausführung von nicht signierten Makros wird generell
erlaubt.
Zum Ändern der Sicherheitsstufe wählen Sie im Menü Extras das Unter-
menü Makro und darin den Menüpunkt Sicherheit. Es erscheinen die
drei genannten Möglichkeiten. Eine Änderung wird erst beim nächsten Öff-
nen einer Excel-Datei wirksam.
1.10.6 Symbolleiste »Visual Basic«
Nach Einblenden der Symbolleiste Visual Basic haben Sie schnelleren
Zugriff auf die wichtigsten Befehle im Zusammenhang mit Makros und der
Entwicklung mit Visual Basic.
1.10.7 Entwicklungsumgebung Visual Basic Editor
Zum Aufruf des VBEs wählen Sie im Menü Extras das Untermenü Makro,
darin den Menüpunkt Visual Basic-Editor oder die Tastenkombination
(Alt)+(F11).
Das Symbol zum Starten eines Makros aus dem Codefenster heraus ist ein
grüner Pfeil. Alternativ können Sie das Menü Ausführen (Menüpunkt
Sub/ UserForm ausführen) oder die Funktionstaste (F5) nutzen.
1 Einführung
48
1.10.8 Persönliche Makroarbeitsmappe
Die Persönliche Makroarbeitsmappe heißt personal.xls, und ihr Standard-
speicherort ist seit Windows Vista das (eventuell versteckte) Verzeichnis C:\
Benutzer\[Benutzername]\AppData\Roaming\Microsoft\Excel\XLStart und
unter XP C:\Dokumente und Einstellungen\[Benutzername]\Anwendungs-
daten\Microsoft\Excel\XLStart.
205
Kapitel 7
Diagramme und Grafiken
Die Automatisierung des Aufbaus von Diagrammen und Shapes hilft Ihnen
beim Aufbau professioneller Anwendungen.
In diesem Kapitel lernen Sie diverse Möglichkeiten zur Programmierung
verschiedener Arten von Grafiken kennen:
� Diagramme
� Shapes
� WordArt (seit Excel 2007)
� bedingte Formatierungen (seit Excel 2007)
� Sparklines (seit Excel 2010)
� SmartArt (seit Excel 2007)
Diagramme können in Excel per Knopfdruck schnell erzeugt werden. In die-
sem Kapitel lernen Sie, wie Sie Diagramme per VBA-Programmcode erstel-
len und verändern. Damit haben Sie die Möglichkeit, zusammen mit Ihren
Programmierfähigkeiten, spezielle Diagramme zu erstellen.
AutomatisierungDabei kann es sich beispielsweise um ein Diagramm mit besonderer Daten-
auswahl oder spezieller Diagrammform handeln, das automatisch aus
einer Textdatei, abhängig von aktuellen Bedingungen erstellt wird.
Zeichnungs-objekte
In Abschnitt 7.5, »Shapes«, werden einige Möglichkeiten von Shapes erläu-
tert. Shapes sind Zeichnungsobjekte, z.B. die Autoformen. Sie teilen zahlrei-
che Eigenschaften mit Diagrammen.
Bedingte Formatierung
Zellen können, in Abhängigkeit von Bedingungen, mithilfe von Datenbal-
ken, Farbskalen und Symbolsätzen unterschiedlich formatiert werden.
Mehr zu diesen bedingten Formatierungen lesen Sie in Abschnitt 7.7,
»Bedingte Formatierungen«. In Excel 2010 wurden die Möglichkeiten der
bedingten Formatierungen erweitert.
7 Diagramme und Grafiken
206
Sparklines In Abschnitt 7.8, »Sparklines«, wird die Erzeugung von Sparklines beschrie-
ben. Dies sind kleine Diagramme, die als Zellhintergrund eingebettet wer-
den. Sie sollen kurz und prägnant Zahlenverläufe verdeutlichen. Sparklines
wurden mit Excel 2010 eingeführt.
SmartArts Mithilfe von SmartArts können seit Excel 2007 Beziehungen, Prozessab-
läufe oder Hierarchien schnell und übersichtlich dargestellt werden. Smart-
Arts sind besondere Gruppen von Shapes. Sie können mithilfe von VBA
allerdings nicht verändert werden. Ihre Eigenschaften können nur ausgele-
sen werden, siehe Abschnitt 7.9, »SmartArt«.
7.1 Diagramm erstellen
Beispieltabelle Bekanntlich können Diagramme sowohl auf eigenen Blättern in einer
Arbeitsmappe als auch eingebettet in einem Tabellenblatt erstellt werden.
Beide Methoden werden in diesem Abschnitt vorgestellt. Ausgangspunkt
soll in beiden Fällen eine Tabelle mit Temperaturwerten sein, die Sie in
Abbildung 7.1 sehen.
7.1.1 Diagrammblatt erstellen
Hierarchie Diagramme auf eigenen Blättern (Diagrammblätter) stehen in der
Objekthierarchie auf der gleichen Ebene wie Tabellenblätter. Es gibt ver-
schiedene Auflistungen innerhalb einer Arbeitsmappe:
Sheets � Sheets enthält alle Tabellenblätter und Diagrammblätter.
� Worksheets enthält nur die Tabellenblätter (wie bekannt).
Charts � Charts enthält nur die Diagrammblätter.
Abbildung 7.1 Beispieldaten für Diagramme
7.1 Diagramm erstellen
207
Mit der folgenden Prozedur wird ein einfaches Liniendiagramm als Dia-
grammblatt in der Arbeitsmappe erstellt:
Sub DiagrammNeuesBlattErstellen()ThisWorkbook.Charts.Add After:=Worksheets("Tabelle1")With ActiveChart
.ChartType = xlLine
.SetSourceData Worksheets("Tabelle1").Range("A1:C8")
.Name = "Diagramm1"End With
End Sub
Listing 7.1 Sub DiagrammNeuesBlattErstellen in Mappe7.xlsm, Modul 1
Das Ergebnis zeigt Abbildung 7.2.
Zur Erläuterung:
Add()� Die Methode Add() des Objekts Charts erstellt ein Diagrammblatt und
fügt es der Charts-Auflistung der aktiven Arbeitsmappe hinzu. Ähnlich
wie beim Kopieren oder Verschieben von Tabellenblättern können Sie
mithilfe von Before und After den Ort des neuen Blattes festlegen. Ohne
Angabe wird das neue Blatt vor dem aktuell aktiven Blatt eingefügt.
Abbildung 7.2 Diagramm auf neuem Blatt
7 Diagramme und Grafiken
208
ActiveChart � Das neue Diagrammblatt ist vom Typ Chart. Es wird zum aktiven Dia-
grammblatt. Daher kann es mit ActiveChart angesprochen werden.
ChartType � Die Eigenschaft ChartType legt den Typ des Diagramms fest, hier xlLine
für ein Liniendiagramm. Einige wichtige Diagrammtypen werden weiter
unten aufgelistet.
SetSourceData() � Die Methode SetSourceData() legt die Datenquelle für das Diagramm
fest. In diesem Fall ist das der Bereich A1 bis C8 des Tabellenblattes
Tabelle1 (mit den Temperaturdaten).
Eigenschaft»Name«
� Mithilfe der Eigenschaft Name können Sie dem Diagramm einen Namen
geben.
Hinweis
Die Methode SetSourceData() hat noch einen zweiten, optionalen Para-
meter. Damit legen Sie fest, ob das Diagramm die Tabelle nach Spalten
(xlColumns) oder Zeilen (xlRows) darstellt. Der erste Wert ist der Standard.
Diagrammtypen Tabelle 7.1 stellt einige Diagrammtypen dar.
7.1.2 Eingebettetes Diagramm erstellen
ChartObjects Eingebettete Diagramme stehen in der Objekthierarchie unterhalb der
Tabellenblätter. Die Auflistung Worksheets enthält die Unterauflistung
ChartObjects, also alle Diagrammrahmen des Tabellenblattes. Ein Chart-
Object ist Element dieser Auflistung ChartObjects, also ein einzelner Dia-
grammrahmen. Ein einzelnes Diagramm ist ein Objekt vom Typ Chart und
stellt den Wert der Eigenschaft Chart eines Diagrammrahmens dar. Bis auf
diese Einordnung gleichen sich beide Diagrammformen.
Diagrammtyp Eigenschaft »ChartType«
gruppiertes Säulendiagramm xlColumnClustered
gruppiertes Balkendiagramm xlBarClustered
Liniendiagramm xlLine
Kreisdiagramm xlPie
Tabelle 7.1 Diagrammtypen
7.1 Diagramm erstellen
209
Mit der folgenden Prozedur wird ein einfaches Liniendiagramm in das
Tabellenblatt Tabelle1 eingebettet:
Sub DiagrammEingebettetErstellen()Dim CO As ChartObjectDim CH As Chart
Set CO = ThisWorkbook.Worksheets("Tabelle1"). _ChartObjects.Add(200, 10, 300, 150)
Set CH = CO.ChartCH.ChartType = xlLineCH.SetSourceData Worksheets("Tabelle1").Range("A1:C8")
End Sub
Listing 7.2 Sub DiagrammEingebettetErstellen in Mappe7.xlsm, Modul 1
Das Ergebnis sehen Sie in Abbildung 7.3.
Zur Erläuterung:
ChartObject� Zunächst wird eine Variable vom Typ ChartObject deklariert. Sie ver-
weist später auf den neu erstellten Diagrammrahmen.
Chart-Variable� Anschließend wird eine Variable vom Typ Chart deklariert. Sie verweist
später auf das Diagramm des neu erstellten Diagrammrahmens.
Add()� Die Auflistung ChartObjects enthält alle Rahmen der eingebetteten Dia-
gramme auf einem Tabellenblatt. Die Methode Add() erstellt einen
neuen Diagrammrahmen an einem bestimmten Ort in einer bestimm-
Abbildung 7.3 Eingebettetes Diagramm
7 Diagramme und Grafiken
210
ten Größe. Sie liefert einen Verweis auf das neu erstellte Objekt zurück.
Die vier Parameter von Add() stehen für:
– Abstand des Rahmens zum linken Rand des Tabellenblattes
– Abstand des Rahmens zum oberen Rand des Tabellenblattes
– Breite des Rahmens
– Höhe des Rahmens
Eigenschaft»Chart«
� Die Eigenschaft Chart des ChartObjects stellt das eigentliche Diagramm
innerhalb des Rahmens dar.
ChartType � Die Eigenschaft ChartType ist bereits bekannt; sie legt den Typ des Dia-
gramms fest.
SetSourceData() � Die Methode SetSourceData() ist ebenfalls bereits bekannt. Sie legt die
Datenquelle für das Diagramm fest. In diesem Fall ist das der Bereich A1
bis C8 des aktiven Tabellenblattes.
7.2 Diagramm ändern
Elemente ändern Diagramme haben viele Elemente mit zahlreichen Eigenschaften, die
natürlich auch im Nachhinein geändert werden können. Die Elemente ste-
hen in der Objekthierarchie unterhalb der Diagramme. Sie unterscheiden
sich je nach Diagrammtyp. Am Beispiel des soeben erstellten Liniendia-
gramms sollen stellvertretend einige wichtige Eigenschaften (und Metho-
den) erläutert werden.
Seit Excel 2010 können Sie nicht nur die Erstellung eines Diagramms, son-
dern auch die Änderungen an einem Diagramm mithilfe eines Makros auf-
zeichnen. Dies kann eine Hilfe zur Nutzung der Objekthierarchie sein,
deren Vielfalt hier nicht komplett beschrieben werden kann.
7.2.1 Diagrammblatt ändern
Zunächst das Programm:
Sub DiagrammNeuesBlattAendern()Dim CH As ChartSet CH = ThisWorkbook.Charts(1)DiagrammAendern CH
End Sub
Listing 7.3 Sub DiagrammNeuesBlattAendern in Mappe7.xlsm, Modul 1
7.2 Diagramm ändern
211
Das Programm ist zweigeteilt. Zunächst der Programmteil, der nur auf Dia-
grammblätter zutrifft:
Chart-Variable� Es wird eine Variable vom Typ Chart deklariert. Dieser Variablen wird das
erste Diagrammblatt dieser Arbeitsmappe zugewiesen.
Charts(Index)� Es wird die Prozedur DiagrammAendern() aufgerufen, als Parameter wird
das erste Diagrammblatt Charts(1) übergeben.
Es folgt der Programmteil, der sowohl auf Diagrammblätter als auch auf
eingebettete Diagramme zutrifft:
Sub DiagrammAendern(CH As Chart)' DiagrammflächeCH.ChartArea.Interior.Color = vbCyan
' ZeichnungsflächeCH.PlotArea.Interior.Color = vbYellow
' TitelCH.HasTitle = TrueCH.ChartTitle.Text = "Temperatur"' LegendeCH.HasLegend = TrueWith CH.Legend
.Interior.Color = vbYellow
.Border.Color = vbBlue
.Border.Weight = xlThickEnd With
' Achse KategorienWith CH.Axes(xlCategory)
.HasTitle = True
.AxisTitle.Text = "Datum"
.TickLabels.NumberFormatLocal = "TT.MM."End With
' Achse WerteWith CH.Axes(xlValue)
.HasTitle = True
.AxisTitle.Text = "Grad"
.MinimumScale = 5
.MaximumScale = 35
7 Diagramme und Grafiken
212
End With
' DatenreiheWith CH.SeriesCollection(1)
.Border.Color = vbRed
.MarkerStyle = xlMarkerStyleCircle
.MarkerForegroundColor = vbRed
.MarkerBackgroundColor = vbRedEnd With
'DatenpunktWith CH.SeriesCollection(1).Points(3)
.Border.Color = vbBlue
.ApplyDataLabels xlShowValue
.MarkerStyle = xlMarkerStyleSquare
.MarkerForegroundColor = vbBlue
.MarkerBackgroundColor = vbBlueEnd With
End Sub
Listing 7.4 Sub DiagrammAendern in Mappe7.xlsm, Modul 1
Die Abbildungen 7.4 und 7.5 zeigen einige Bildausschnitte dazu.
Abbildung 7.4 Geändert: Flächenfarben, Legende und Datenreihe
Abbildung 7.5 Geändert: Achse, Datenpunkt
7.2 Diagramm ändern
213
Zur Erläuterung:
ChartArea� Die Eigenschaft ChartArea steht für die Diagrammfläche des Diagramms.
Diese umfasst z.B. Zeichnungsfläche, Titel und Legende. Sie hat u.a. die
Eigenschaft Interior, die für (wie bei einer Zelle) das Innere des Objekts
steht. Dieses Innere hat wiederum eine Farbe, die in diesem Beispiel auf
Cyan gesetzt wird.
PlotArea� Die Eigenschaft PlotArea steht für die Zeichnungsfläche des Diagramms.
Sie hat ebenfalls u.a. die Eigenschaft Interior, deren Farbe in diesem Bei-
spiel auf Gelb gesetzt wird.
HasTitle� Diagramme können einen Titel haben. Darüber bestimmt die Eigen-
schaft HasTitle. Wird sie auf True gesetzt, dann hat das Diagramm einen
Titel; bei False hat es keinen Titel.
ChartTitle� Das Aussehen des Titels wird über die Eigenschaft ChartTitle festgelegt.
Die Eigenschaft Text enthält den Text des Titels.
HasLegend� Diagramme können eine Legende haben. Darüber bestimmt die Eigen-
schaft HasLegend. Auch sie kann auf True oder False gesetzt werden.
Legend� Das Aussehen der Legende wird über die Eigenschaft Legend festgelegt.
Ähnlich wie eine Zelle hat eine Legende die Eigenschaften Interior und
Border. Damit können Sie über die Farbe des Inneren bzw. über Rahmen-
farbe und -dicke bestimmen.
Axes, Axis� Alle Achsen eines Diagramms stehen in der Auflistung Axes. Eine ein-
zelne Achse ist ein Objekt vom Typ Axis. Zunächst muss mithilfe der
Methode Axes() des Objekts Chart entschieden werden, welche Achse
gemeint ist. Es gibt die Parameter:
– xlCategory für die horizontale Achse, die Kategorienachse
– xlValue für die vertikale Achse, die Wertachse
AxisTitle� Für jede der beiden Achsen wird im Beispiel festgelegt, dass sie einen
Achsentitel haben (HasTitle = True). Anschließend wird der Text des
Achsentitels zugewiesen (AxisTitle.Text = ...).
TickLabels� Bei der Kategorienachse wird die Formatierung der Achsenbeschriftung
(TickLabels) bestimmt. Hier stehen im Beispiel Datumsangaben; sie
werden mithilfe von NumberFormatLocal (wie Zellen) formatiert.
...Scale� Bei der Wertachse wird die Skalierung bestimmt. Dabei können unterster
Wert (MinimumScale) und oberster Wert (MaximumScale) gesetzt werden.
SeriesCollection, Series
� Alle Datenreihen eines Diagramms stehen in der Auflistung Series-
Collection. Eine einzelne Datenreihe ist ein Objekt vom Typ Series.
7 Diagramme und Grafiken
214
Zunächst muss mithilfe der Methode SeriesCollection() des Objekts
Chart entschieden werden, welche Datenreihe gemeint ist. Diese
Methode erhält als Parameter die Nummer der Datenreihe, beginnend
bei 1, und liefert als Rückgabewert die entsprechende Datenreihe.
Border � Mit Border können die Eigenschaften des Rahmens (bei Liniendiagram-
men die Eigenschaften der eigentlichen Linie) der Datenreihe bestimmt
werden. In diesem Beispiel wird die Farbe auf Rot gesetzt.
� Mit MarkerStyle, MarkerForegroundColor, MarkerBackgroundColor ent-
scheiden Sie über das Aussehen der Markierungspunkte auf der Linie.
MarkerStyle – Für MarkerStyle ist eine Reihe von Konstanten erlaubt, z.B. xlMarker-
StyleCircle (Kreis), xlMarkerStyleSquare (Quadrat), xlMarkerStyle-
None (keine Markierung).
Marker...Color – Die Eigenschaften MarkerForegroundColor und MarkerBackgroundColor
stehen für die Farbe der Markierungsfüllung und des Markierungs-
randes.
Points, Point � Alle Datenpunkte einer Datenreihe stehen in der Auflistung Points. Ein
einzelner Datenpunkt ist ein Objekt vom Typ Point. Zunächst muss mit-
hilfe der Methode Points() des Objekts Series entschieden werden, wel-
cher Datenpunkt gemeint ist. Diese Methode erhält als Parameter die
Nummer des Datenpunktes, beginnend bei 1, und liefert als Rückgabe-
wert den entsprechenden Datenpunkt.
� Mit Border bestimmen Sie die Eigenschaften des Rahmens (bei Linien-
diagrammen die Eigenschaften der eigentlichen Linie) des Datenpunk-
tes. In diesem Beispiel wird die Farbe auf Blau gesetzt.
� Die Methode ApplyDataLabels() bestimmt über die Beschriftung von
Datenreihen oder Datenpunkten. Der wichtigste Parameter ist der Typ
der Beschriftung. Erlaubte Werte sind u.a. xlShowValue (Wert), xlShowLa-
bel (Kategorie), xlShowNone (keine Beschriftung).
� Das Aussehen der Markierung eines Datenpunktes lässt sich wie bei
einer Datenreihe einstellen, siehe oben.
Hinweis
In den Versionen vor Excel 2007 lässt sich die Formatierung der Achsenbe-
schriftung nicht vollständig einstellen. Die Eigenschaft NumberFormatLocaleines TickLabels kann nicht mit einem Datumsformat eingestellt werden.
7.3 Diagramm verwalten
215
7.2.2 Eingebettetes Diagramm ändern
Ähnlich Diagrammblatt
Das Programm zum Ändern eines eingebetteten Diagramms ist ebenso
aufgebaut wie das Programm zum Ändern eines Diagrammblattes, also
zweiteilig. Es folgt der Programmteil, der nur auf eingebettete Diagramme
zutrifft:
Sub DiagrammEingebettetAendern()Dim CO As ChartObjectDim CH As Chart
Set CO = ThisWorkbook.Worksheets("Tabelle1").ChartObjects(1)CO.Left = 220CO.Top = 30CO.Width = 400CO.Height = 300
Set CH = CO.ChartDiagrammAendern CH
End Sub
Listing 7.5 Sub DiagrammEingebettetAendern in Mappe7.xlsm, Modul 1
Zur Erläuterung:
ChartObject� Es wird eine Variable vom Typ ChartObject deklariert. Dieser Variablen
wird der erste Diagrammrahmen des Tabellenblattes Tabelle1 dieser
Arbeitsmappe zugewiesen.
Chart-Variable� Anschließend wird eine Variable vom Typ Chart deklariert. Ihr weisen
wir das Diagramm dieses Diagrammrahmens zu.
Diagramm-rahmen
� Bei einem eingebetteten Diagramm kann es sinnvoll sein, Position und
Größe des Diagrammrahmens zu ändern. Hierzu können Sie die Eigen-
schaften Left, Top, Width und Height nutzen.
� Es wird die (bereits bekannte) Prozedur DiagrammAendern() aufgerufen;
als Parameter wird der Chart übergeben.
7.3 Diagramm verwalten
Diagramme können u. a. kopiert, gelöscht oder als Bilddatei exportiert
werden.
7 Diagramme und Grafiken
216
7.3.1 Diagrammblatt verwalten
Kopieren Es folgen drei Programme zum Kopieren, Löschen bzw. Exportieren eines
Diagrammblattes. Zunächst das Kopieren:
Sub DiagrammNeuesBlattKopieren()ThisWorkbook.Charts("Diagramm1").Copy _
After:=Worksheets("Tabelle3")ActiveChart.Name = "Diagramm1 Neu"
End Sub
Listing 7.6 Sub DiagrammNeuesBlattKopieren in Mappe7.xlsm, Modul 1
Zur Erläuterung:
� Ein Diagrammblatt wird genauso kopiert wie ein Tabellenblatt.
Copy(), After,Before
� Die Methode Copy() sorgt für die Kopie, siehe Abbildung 7.6. Mit Before
bzw. After können Sie den Ort der Kopie angeben. Ohne Parameter
würde eine neue Arbeitsmappe mit dem Diagrammblatt als einzigem
Blatt angelegt werden.
Das Ergebnis sehen Sie in Abbildung 7.6.
Löschen Es folgt das Löschen:
Sub DiagrammNeuesBlattLoeschen()ThisWorkbook.Charts("Diagramm1 Neu").Delete
End Sub
Listing 7.7 Sub DiagrammNeuesBlattLoeschen in Mappe7.xlsm, Modul 1
Abbildung 7.6 Kopiertes Diagrammblatt
7.3 Diagramm verwalten
217
Zur Erläuterung:
Delete()� Die Methode Delete() löscht das angegebene Diagrammblatt mit Rück-
frage.
ExportierenZuletzt das Exportieren:
Sub DiagrammNeuesBlattExport()ThisWorkbook.Charts("Diagramm1").Export "C:\Temp\März.png"
End Sub
Listing 7.8 Sub DiagrammNeuesBlattExport in Mappe7.xlsm, Modul 1
Zur Erläuterung:
Export()� Die Methode Export() dient dem Erzeugen einer Bilddatei. Es muss der
Name der Bilddatei (gegebenenfalls mit Verzeichnisnamen) angegeben
werden. Die Endung des Dateinamens bestimmt über die Art der Kon-
vertierung; es sind u. a. .jpg, .gif und .png erlaubt.
Das Ergebnis sehen Sie in Abbildung 7.7.
7.3.2 Eingebettetes Diagramm verwalten
KopierenParallel zum vorherigen Abschnitt folgen drei Programme zum Kopieren,
Löschen bzw. Exportieren eines eingebetteten Diagramms. Zunächst das
Kopieren:
Sub DiagrammEingebettetKopieren()With ThisWorkbook.Worksheets("Tabelle1")
.ChartObjects(1).Copy
.Paste
.ChartObjects(2).Top = 250
.ChartObjects(2).Left = 200End With
End Sub
Listing 7.9 Sub DiagrammEingebettetKopieren in Mappe7.xlsm, Modul 1
Abbildung 7.7 Export-Ergebnis
7 Diagramme und Grafiken
218
Das Ergebnis sehen Sie in Abbildung 7.8.
Zur Erläuterung:
� Es wird davon ausgegangen, dass im Tabellenblatt Tabelle1 nur ein Dia-
grammrahmen existiert.
Copy() � Dieser Rahmen hat die Nummer 1 in der ChartObjects-Auflistung. Die
Methode Copy() kopiert den Diagrammrahmen (inklusive Diagramm) in
die Zwischenablage.
Paste() � Die Methode Paste() fügt den Diagrammrahmen aus der Zwischenablage
in das Tabellenblatt Tabelle1 ein. Damit wird er zu ChartObjects(2).
Diagramm-rahmen
� Die Position dieses neuen Diagrammrahmens wird über die Eigenschaf-
ten Top und Left festgelegt.
Löschen Es folgt das Löschen:
Sub DiagrammEingebettetLoeschen()ThisWorkbook.Worksheets("Tabelle1").ChartObjects(2).Delete
End Sub
Listing 7.10 Sub DiagrammEingebettetLoeschen in Mappe7.xlsm, Modul 1
Zur Erläuterung:
Delete() � Die Methode Delete() löscht den Diagrammrahmen ohne Rückfrage.
Abbildung 7.8 Kopiertes, eingebettetes Diagramm
7.4 Beispiel: Formatiertes Kreisdiagramm
219
ExportierenZuletzt das Exportieren:
Sub DiagrammEingebettetExport()ThisWorkbook.Worksheets("Tabelle1"). _
ChartObjects(1).Chart.Export "C:\Temp\März.jpg"End Sub
Listing 7.11 Sub DiagrammEingebettetExport in Mappe7.xlsm, Modul 1
Zur Erläuterung:
Export()� Die Methode Export() dient dem Erzeugen einer Bilddatei, diesmal aus
dem Diagramm eines Diagrammrahmens.
7.4 Beispiel: Formatiertes Kreisdiagramm
BeispieltabelleAls weiteres Beispiel für ein neu erstelltes, eingebettetes und formatiertes
Diagramm soll nachfolgend ein Kreisdiagramm dienen. Sie können erken-
nen, dass dabei viele allgemeine Diagrammeigenschaften aus dem Linien-
diagramm übernommen werden können. Andere Eigenschaften gibt es
hingegen nur bei Kreisdiagrammen. Als Datenquelle dienen die Wahl-
ergebnisse in Abbildung 7.9.
Abbildung 7.9 Basisdaten für Kreisdiagramm
7 Diagramme und Grafiken
220
Zunächst der Code:
Sub DiagrammKreis()Dim CO As ChartObjectDim CH As ChartDim i As Integer
Set CO = ThisWorkbook.Worksheets("Tabelle2"). _ChartObjects.Add(200, 10, 400, 350)
Set CH = CO.Chart
' Diagrammtyp und DatenquelleCH.ChartType = xlPieCH.SetSourceData Range("A1:B13")
' Diagramm- und ZeichnungsflächeCH.ChartArea.Interior.Color = vbCyanCH.PlotArea.Interior.Color = vbYellow
' TitelCH.HasTitle = TrueCH.ChartTitle.Text = "Spanien 2004"
' LegendeCH.HasLegend = TrueWith CH.Legend
.Interior.Color = vbYellow
.Border.Color = vbBlue
.Border.Weight = xlThickEnd With
'DatenpunkteCH.SeriesCollection(1).Points(1).Interior.Color = vbWhite
For i = 1 To CH.SeriesCollection(1).Points.CountIf Cells(i + 1, 2) > 500000 Then
With CH.SeriesCollection(1).Points(i).ApplyDataLabels xlDataLabelsShowLabelAndPercent.DataLabel.NumberFormat = "0.00 %"
End With
7.4 Beispiel: Formatiertes Kreisdiagramm
221
End IfNext i
End Sub
Listing 7.12 Sub DiagrammKreis in Mappe7.xlsm, Modul 1
Zwei Bildausschnitte zum Ergebnis zeigen die Abbildungen 7.10 und 7.11.
Zur Erläuterung:
Add()� Wie bekannt, wird mit ChartObject.Add() der Diagrammrahmen neu
erstellt.
Typ xlPie� Als Diagrammtyp dient xlPie für Kreisdiagramme (Kuchendiagramme).
� Diagramm- und Zeichnungsfläche, Titel und Legende können wie beim
Liniendiagramm formatiert werden.
Abbildung 7.10 Formatiert: Flächen, Datenreihe, Titel
Abbildung 7.11 Formatiert: Legende
7 Diagramme und Grafiken
222
� Bei den Datenreihen sieht es anders aus. Es gibt natürlich keine Markie-
rungen, dafür aber z. B.
Beschriftung – mit xlDataLabelsShowLabelAndPercent einen speziellen Beschriftungs-
typ und
Fläche – eine innere Fläche.
� Im vorliegenden Fall werden mit dem Beschriftungstyp die Daten-
punkte, deren Wert oberhalb einer Grenze (500.000 Stimmen) liegt, mit
Kategorie und Prozentzahl beschriftet. Außerdem wird die innere Fläche
eines Datenpunktes in Weiß dargestellt.
DataLabel � Die Eigenschaft DataLabel bestimmt über das Aussehen der Beschrif-
tung. Hier wurde festgelegt, dass die Prozentzahl mit zwei Nachkomma-
stellen dargestellt wird.
7.5 Shapes
Zeichnungs-objekte
Zeichnungsobjekte (Shapes) werden, wie eingebettete Diagramme, inner-
halb eines Tabellenblattes angeordnet. Die Auflistung Shapes liegt daher
auch in der Objekt-Hierarchie unterhalb von Worksheets und umfasst alle
Zeichnungsobjekte.
Wichtige Eigenschaften und Methoden der Auflistung Shapes sind:
� Count: Anzahl der Zeichnungsobjekte
AddShape() � AddShape(): Erzeugen der meisten Typen von Zeichnungsobjekten
� AddLine(): Erzeugen einer Linie
� AddConnector(): Erzeugen eines Verbinders
� BuildFreeform(): Erzeugen einer Freiform
Wie bei allen Auflistungen üblich, sind die Shapes eines Tabellenblattes in
der Reihenfolge ihrer Erzeugung durchnummeriert (Shapes(1), Shapes(2),
Shapes(3)...).
Einige der zahlreichen Möglichkeiten von Shapes werden in diesem
Abschnitt anhand von bekannten Autoformen wie Rechteck, Oval, Linie,
Verbinder und Freiform erläutert. Zur besseren Übersicht werden in
Abschnitt 7.5.6, »Alle Formen«, alle verschiedenen Formen von Shapes mit-
hilfe eines VBA-Programms dargestellt.
Index
427
Index
- (minus) .................................................................... 113
! (Ausrufezeichen) ................................................. 381
% (Prozentzeichen), in SQL ............................... 351
& (Verkettung) ................................................ 44, 121
* (Multiplikation) ................................................... 113
* (Platzhalter) ................................................ 118, 303
+ (plus) ............................................................. 113, 260
. (Punkt) ..................................................................... 104
/ (Division) ............................................................... 114
< (kleiner) ................................................................. 117
in SQL .................................................................... 350
<= (kleiner oder gleich) ....................................... 117
in SQL .................................................................... 350
<> (ungleich) ........................................................... 118
in SQL .................................................................... 350
= (benannter Parameter) ....................................... 62
= (gleich) .................................................................... 118
in SQL .................................................................... 350
> (größer) .................................................................. 117
in SQL .................................................................... 350
>= (größer oder gleich) ........................................ 118
in SQL .................................................................... 350
? (Fragezeichen) ........................................... 118, 303
@ (Formatierung) ................................................. 381
@ Formatierung .................................................... 288
^ (hoch) ...................................................................... 115
_ (Unterstrich) ................................................. 66, 105
in SQL .................................................................... 351
A
Abfrage
Aktions- (SQL) .................................................... 344
Auswahl- (SQL) .................................................. 344
Ergebnis filtern (SQL) ...................................... 348
Ergebnis sortieren (SQL) ................................ 352
Abfrage (SQL) .......................................................... 343
Abfrageergebnis filtern (SQL) ........................... 349
Abläufe, parallele ................................................... 403
AbortRetryIgnore .................................................. 260
Absatz erzeugen (Word) ..................................... 316
Absolute Aufzeichnung ......................................... 38
Access
ADO-Bibliothek ................................................. 342
Access (Forts.)
Datenaustausch ................................................ 341
Verbindung herstellen .................................... 342
Activate(), Worksheets .......................................... 64
ActiveCell ............................................................. 35, 68
Address ................................................................... 71
ActiveChart .............................................................. 208
ActiveDocument (Word) .................................... 312
ActiveSheet .................................................. 25, 35, 60
UsedRange ............................................................. 88
ActiveWindow .......................................................... 65
DisplayGridlines .................................................. 65
DisplayHeadings ................................................. 65
ActiveWorkbook ............................................... 35, 54
ActiveX-Objekt erstellen (Word) ..................... 312
Add()
Attachments (Outlook) .................................. 326
ChartObjects ....................................................... 209
Charts .................................................................... 207
Collection ............................................................. 196
Documents (Word) ........................................... 316
Paragraphs (Word) ........................................... 316
SortFields ................................................................ 97
SparklineGroups ............................................... 243
Tables (Word) ..................................................... 318
Workbooks ............................................................ 51
Worksheets ............................................................ 60
AddColorScale(), FormatConditions .... 238, 240
AddConnector(), Shapes ........................... 222, 227
AddDatabar(), FormatConditions ................... 237
AddIconSetCondition(),
FormatConditions ............................................ 241
AddItem(), ComboBox ........................................ 378
Addition .................................................................... 113
AddLine(), Shapes ........................................ 222, 225
AddNodes(), FreeformBuilder .......................... 230
Address ............................................................ 394, 405
Zellbereich ............................................................. 71
AddShape() ............................................................... 233
Shapes ......................................................... 222, 223
ADO-Bibliothek, Access ...................................... 342
ADODB
Connection (Access) ............................... 343, 345
Recordset (Access) .................................. 344, 345
Index
428
After
Diagrammblatt ................................................. 207
Tabellenblatt ........................................................ 62
Aktionsabfrage (SQL) .............. 344, 346, 355, 357
Aktivieren und selektieren .................................. 36
Aktualisierungsabfrage (SQL) ........................... 355
Alle Zellen ............................................................ 64, 71
Alt + F11 ........................................................................ 31
And .................................................................... 120, 306
AND (SQL) ................................................................. 350
Anführungszeichen, doppelte ........................... 78
Anweisung in mehreren Zeilen ....................... 105
Anwendung unterbrechen ................................ 284
Anzeigefenster ......................................................... 65
Apostroph ............................................................ 24, 34
Append ...................................................................... 301
Application ....................................................... 50, 198
Dialogs ........................................................ 323, 359
Documents (Word) ........................................... 312
GetNameSpace() (Outlook) ........................... 332
InputBox() ............................................................ 254
OnTime() .............................................................. 198
Outlook ................................................................. 326
Path ........................................................................ 198
Quit() ...................................................................... 199
Quit() (Outlook) ................................................. 326
Quit() (Word) ....................................................... 313
Run() ....................................................................... 182
ScreenUpdating ................................................. 279
Visible (Word) ..................................................... 312
Word ...................................................................... 312
Apply(), Sort ............................................................... 97
ApplyDataLabels()
Point ............................................................. 214, 222
Series ...................................................................... 214
AppointmentItem (Outlook)
Duration ............................................................... 339
GetRecurrencePattern() ................................. 341
Location ................................................................ 339
Outlook ................................................................. 339
Save() ..................................................................... 339
Start ........................................................................ 339
Subject ................................................................... 339
Arabic() ...................................................................... 294
Arabische Ziffern ................................................... 294
Arbeitsmappe ........................................................... 50
aktive ....................................................................... 54
aktivieren ............................................................... 56
Arbeitsmappe (Forts.)
Anzahl ...................................................................... 51
diese .......................................................................... 50
erzeugen ................................................................. 51
ist gesichert ........................................................... 57
laufende Nummer ............................................... 57
Name ................................................................. 53, 57
öffnen ....................................................................... 52
Pfad ........................................................................... 58
schließen ................................................................. 53
speichern ................................................................ 56
wird geöffnet ......................................................... 97
wird geschlossen ................................................. 98
Arbeitstage, berechnen ...................................... 281
Array() ........................................................................ 156
As ..................................................... 109, 165, 178, 190
Dateinummer .................................................... 297
New ............................................................... 192, 197
ASC (SQL) .................................................................. 352
Asc() ............................................................................ 394
Attachment (Outlook) ........................................ 335
Attachments
Add() (Outlook) ................................................. 326
Count (Outlook) ................................................ 334
MailItem (Outlook) ......................................... 326
Auflistung ............................................................ 50, 60
durchlaufen ........................................................ 194
eigene .................................................................... 196
Aufruf, zeitverzögerter ....................................... 198
Aufzeichnung
absolute .................................................................. 38
beenden ................................................................... 22
beginnen ................................................................. 21
relative .................................................................... 37
Ausgabe formatieren .......................................... 270
Ausgabe-Dialog ...................................................... 258
Auskommentieren ............................................... 104
Auswahlabfrage (SQL) ................................ 344, 348
Auswertungsreihenfolge .......................... 117, 123
AutoFilter(), Range ............................................... 200
AutoFit, Columns/Rows ........................................ 88
Axes ............................................................................ 213
Axes(), Chart ............................................................ 213
Axis ............................................................................. 213
AxisTitle ............................................................... 213
HasTitle ................................................................ 213
MaximumScale ................................................. 213
MinimumScale .................................................. 213
Index
429
Axis (Forts.)
TickLabels ............................................................ 213
AxisTitle .................................................................... 213
B
BackColor, TextBox .............................................. 377
Balkendiagramm ................................................... 208
BarColor, FormatConditions ............................ 237
bas ............................................................................... 183
Bcc, MailItem (Outlook) ...................................... 328
Bearbeitungsmodus ............................................... 37
Bedingte Formatierung ...................................... 236
Bedingung ................................................................ 124
Before
Diagrammblatt ................................................. 207
Tabellenblatt ......................................................... 62
BeginConnect(), ConnectorFormat ............... 228
Benannter Parameter ................................... 62, 170
Benutzer ....................................................................... 18
-definierter Datentyp ...................................... 176
-eingaben ............................................................. 253
-führung ............................................................... 359
Bereich auswählen ................................................... 35
Bezeichnungsfeld .................................................. 369
Beziehung darstellen ........................................... 247
Bildlaufleiste ........................................................... 376
Eigenschaften .................................................... 378
Bildschirmaktualisierung ein/aus ................. 279
Bin2...() ....................................................................... 287
Binär ........................................................................... 287
Blatt, Tabelle und Diagramm ........................... 206
Blau ............................................................................. 113
Body, MailItem (Outlook) .................................. 326
Bold, Font .................................................................... 81
Boolean ........................................................... 107, 117
Border
Legend ................................................................... 213
Point ...................................................................... 214
Series ...................................................................... 214
Borders
Color ......................................................................... 84
InsideLineStyle (Word) ................................... 318
LineStyle .................................................................. 84
OutsideLineStyle (Word) ................................ 318
Range ....................................................................... 83
Table (Word) ....................................................... 318
Weight ...................................................................... 84
Breakpoint ................................................................ 146
BuildFreeform(), Shapes ........................... 222, 229
Button
_Click() .................................................................. 366
Abbrechen ............................................................ 260
erzeugen ........................................................ 36, 364
Ignorieren ............................................................ 260
Ja .............................................................................. 260
Nein ........................................................................ 260
OK ........................................................................... 259
Wiederholen ........................................................ 260
ByRef ........................................................................... 164
ByVal ........................................................................... 163
C
Cancel ......................................................................... 100
Caption, Steuerelement ...................................... 365
Carriage Return ........................................................ 44
Case Else .................................................................... 128
CDate() ....................................................................... 270
CDbl() .......................................................................... 269
Cell, Table (Word) ................................................... 314
Cells ........................................................................ 64, 71
Delete ....................................................................... 88
CenterFooter ............................................................. 68
CenterHeader ............................................................ 68
CenterHorizontally ................................................. 67
CenterVertically ....................................................... 67
Characters
Range ....................................................................... 82
TextFrame ............................................................ 225
Chart ........................................................................... 208
Axes() ..................................................................... 213
ChartArea ............................................................ 213
ChartTitle ............................................................. 213
ChartType .................................................. 208, 210
HasLegend ........................................................... 213
HasTitle ................................................................. 213
Legend ................................................................... 213
Name ..................................................................... 208
PlotArea ................................................................ 213
SeriesCollection() .............................................. 213
SetSourceData() ....................................... 208, 210
ChartArea
Chart ...................................................................... 213
Interior .................................................................. 213
Index
430
ChartObject .............................................................. 208
Copy() .................................................................... 218
Delete() .................................................................. 218
Export() ................................................................. 219
Height .................................................................... 215
Left .......................................................................... 215
Top .......................................................................... 215
Width ..................................................................... 215
ChartObjects ............................................................ 208
Add() ....................................................................... 209
Charts ......................................................................... 206
(Index) ................................................................... 211
Add() ....................................................................... 207
Copy() .................................................................... 216
Delete() .................................................................. 217
Export() ................................................................. 217
ChartTitle
Chart ...................................................................... 213
Text ......................................................................... 213
ChartType, Chart .......................................... 208, 210
CheckBox .................................................................. 372
Value ...................................................................... 374
CInt() ........................................................................... 394
Clear()
Range ....................................................................... 74
SortFields ................................................................ 96
ClearContents(), Range .......................................... 74
ClearFormats(), Range ........................................... 74
Close Datei ............................................................... 297
Close()
Connection (Access) ............................... 343, 346
Recordset (Access) ............................................ 346
Workbooks ............................................................ 53
Code
-ansicht ................................................................. 366
exportieren ................................................ 183, 368
-fenster .................................................................... 33
importieren ............................................... 184, 368
-modul ..................................................................... 32
selbst schreiben ................................................... 41
Codefenster ................................................................ 97
Collection .................................................................. 196
Color
Borders .................................................................... 84
Font .......................................................................... 81
Interior .................................................................... 84
ColorScale ................................................................. 238
ColorScaleCriteria ................................................. 238
ColorScaleType ...................................................... 238
Column, Range ......................................................... 91
Columns
AutoFit ..................................................................... 88
Count (Word) ..................................................... 314
Range ....................................................................... 88
Table (Word) ....................................................... 314
ColumnWidth, Range ............................................. 88
ComboBox ............................................................... 376
_Change() ............................................................ 378
AddItem() ............................................................ 378
List(Index) ........................................................... 378
ListIndex .............................................................. 378
Style ....................................................................... 378
Text ........................................................................ 378
Connection (Access)
ADODB ........................................................ 343, 345
Close() .......................................................... 343, 346
ConnectionString .................................... 343, 346
Execute() ..................................................... 346, 347
Open() .......................................................... 343, 346
ConnectionString, Connection
(Access) ........................................................ 343, 346
ConnectorFormat
BeginConnect() .................................................. 228
EndConnect() ..................................................... 228
Shapes ................................................................... 228
ContactItem (Outlook) ....................................... 336
Email1Address ................................................... 336
FirstName ............................................................ 336
LastName ............................................................ 336
Save() ..................................................................... 337
Convert(), WorksheetFunction ....................... 285
ConvertToShape(), FreeformBuilder ............. 230
Copy()
ChartObject ........................................................ 218
Charts ................................................................... 216
Range ................................................................ 35, 72
Worksheets ............................................................ 61
Count
Attachments (Outlook) .................................. 334
Collection ............................................................ 196
Columns (Word) ................................................ 314
Items (Outlook) ................................................. 332
Range ....................................................................... 89
Rows (Word) ....................................................... 314
Shapes ................................................................... 222
Workbooks ............................................................. 51
Index
431
Count(), WorksheetFunction ............................ 288
CountBlank(), WorksheetFunction ................ 288
CreateItem() (Outlook)
AppointmentItem ............................................ 339
ContactItem ....................................................... 337
MailItem .............................................................. 326
CreateObject()
Outlook ................................................................. 326
Word ...................................................................... 312
Critical ....................................................................... 260
csv ................................................................................ 298
CSV-Datei ........................................................ 298, 301
Cut(), Range ................................................. 24, 35, 72
D
DashStyle, Line ....................................................... 225
Databar ...................................................................... 237
DataLabel
NumberFormatLocal ...................................... 222
Point ...................................................................... 222
Date ............................................................................. 107
DateAdd() ................................................................. 275
DateDiff() .................................................................. 276
Datei
Änderungsdatum ............................................. 306
-attribut ................................................................ 306
-ende ...................................................................... 297
Funktionen .......................................................... 303
geöffnete ........................................... 387, 397, 408
Import, Export ................................................... 295
Information über .............................................. 305
kopieren ............................................................... 308
Länge ..................................................................... 306
löschen .................................................................. 308
Menü ........................................................................ 25
öffnen .................................................................... 297
Öffnen-Dialog .................................................... 360
-operationen ....................................................... 307
schließen .............................................................. 297
schreiben .................................................... 300, 301
Speichern-Dialog .............................................. 361
suchen ................................................................... 303
umbenennen ...................................................... 308
Zeile lesen ............................................................ 297
Zeile schreiben ................................................... 301
Dateiendung
bas .......................................................................... 183
Dateiendung (Forts.)
csv ........................................................................... 298
doc .......................................................................... 310
docx ........................................................................ 310
frm ................................................................ 183, 368
frx .................................................................. 183, 368
gif ............................................................................ 217
jpg ........................................................................... 217
png .......................................................................... 217
xls .............................................................................. 45
xlsb ........................................................................... 40
xlsm .......................................................................... 26
xlsx ........................................................................... 25
Dateityp ändern ....................................................... 47
Datenaustausch
Outlook ................................................................. 319
Textdatei .............................................................. 295
Word ...................................................................... 309
Datenbalken, bedingte Formatierung .......... 236
Datenbank, relationale ........................................ 341
Datenfeld .................................................................. 149
als Parameter ..................................................... 174
dynamisches ....................................................... 155
eindimensionales .............................................. 150
löschen .................................................................. 157
mehrdimensionales ......................................... 152
Obergrenze .......................................................... 174
statisches ............................................................. 149
umwandeln ......................................................... 272
Untergrenze ........................................................ 174
von Objekten ...................................................... 225
Datenquelle für Diagramm ..................... 208, 210
Datensatz
Access .................................................................... 344
aus Datei lesen ................................................... 297
Datentyp ......................................................... 106, 107
benutzerdefinierter .......................................... 176
einer Funktion .................................................... 165
erkennen ............................................................... 110
DateSerial() ............................................................... 276
Datum und Zeit
Datumsangabe erstellen ............................... 276
erkennen ............................................................... 270
Jahr ermitteln ..................................................... 279
letzter Tag im Monat ...................................... 278
Monat ermitteln ................................................ 279
Tag im Monat ermitteln ................................ 278
umwandeln ......................................................... 270
Index
432
Datum und Zeit (Forts.)
Wochentag ermitteln ...................................... 276
Zeit addieren ....................................................... 275
Zeitdifferenz berechnen ................................. 276
Datum, Datentyp ................................................... 107
Datumsfilter ............................................................ 203
Day() ............................................................................ 278
DayofWeekMask, RecurrencePattern
(Outlook) .............................................................. 341
Debug ............................................................... 141, 144
Debug.Print ................................................................ 44
Dec2...() ....................................................................... 287
Default-Button ....................................................... 260
Deklaration .............................................................. 106
erforderlich ................................................... 31, 107
DELETE (SQL) ................................................. 344, 357
Delete()
Cells .......................................................................... 88
ChartObject ......................................................... 218
Charts .................................................................... 217
EntireRow/EntireColumn ................................ 87
FormatConditions ............................................ 236
Range ....................................................................... 86
Worksheets ............................................................ 63
DESC (SQL) ................................................................ 352
Description Err ....................................................... 143
Destination Range .................................................. 72
Dezimal ..................................................................... 287
Dezimalpunkt ......................................................... 109
Diagramm ................................................................ 205
Achse ...................................................................... 213
als Blatt erstellen .............................................. 206
ändern ................................................................... 210
Datenpunkt ......................................................... 214
Datenquelle ............................................... 208, 210
Datenreihe ................................................. 213, 214
Datenreihenbeschriftung .............................. 222
Datenreihenbeschriftungsformat .............. 222
Diagrammfläche ............................................... 213
Diagrammtyp .................................................... 221
eingebettetes ...................................................... 208
eingebettetes ändern ...................................... 215
eingebettetes exportieren ............................. 219
eingebettetes kopieren ................................... 218
eingebettetes löschen ..................................... 218
erstellen ................................................................ 206
hat Legende ......................................................... 213
hat Titel ................................................................. 213
Diagramm (Forts.)
Legende ................................................................ 213
nach Spalten/Zeilen ........................................ 208
Titel ........................................................................ 213
Typ ......................................................................... 210
Zeichnungsfläche ............................................. 213
Diagrammblatt ...................................................... 206
ändern .................................................................. 210
benennen ............................................................. 208
exportieren ......................................................... 217
kopieren ............................................................... 216
löschen ................................................................. 217
Diagrammrahmen ............................................... 208
Größe .................................................................... 215
neu erzeugen ...................................................... 209
Position ................................................................ 215
Dialogfeld ................................................................. 359
anzeigen .............................................................. 367
eigenes ........................................................... 33, 363
einfaches .............................................................. 258
erzeugen .............................................................. 364
initialisieren ....................................................... 373
integriertes ......................................................... 359
Makro ...................................................................... 23
Makro aufzeichnen ............................................ 39
modales ............................................................... 367
schließen .............................................................. 366
Speichern unter .................................................... 25
Start aus Tabellenblatt .................................. 367
Dialogs
Application ................................................ 323, 359
Show() .......................................................... 323, 359
DieseArbeitsmappe, Modul ................................. 33
Dim ............................................................................. 109
Dir() ............................................................................. 303
Direktfenster ................................................... 44, 145
Display(), MailItem (Outlook) .......................... 326
DisplayGridlines, ActiveWindow ...................... 65
DisplayHeadings, ActiveWindow ...................... 65
Division .................................................................... 114
durch 0 ................................................................. 141
Rest ........................................................................ 115
Do Until .................................................................... 134
Do While .......................................................... 133, 134
doc .............................................................................. 310
Documents (Word)
Add() ...................................................................... 316
Application ......................................................... 312
Index
433
Documents (Word) (Forts.)
Open() .................................................................... 312
Paragraphs ......................................................... 312
SaveAs() ................................................................ 316
Tables .................................................................... 314
docx ............................................................................ 310
DoEvents() ...................................................... 284, 403
Dokument (Word)
erzeugen ............................................................... 316
speichern .............................................................. 316
Double ....................................................................... 107
Drehfeld .................................................................... 376
Drucken, Seiteneinrichtung ................................ 66
Duration, AppointmentItem (Outlook) ....... 339
E
Eigenschaft ................................................................. 49
Eigenschaften-Fenster ....................... 32, 364, 369
Einfügeabfrage (SQL) ........................................... 357
Eingaben des Benutzers ..................................... 253
Einheit umrechnen .............................................. 285
Einrückung .............................................................. 104
Einzelschrittverfahren ........................................ 144
Else .............................................................................. 124
ElseIf ........................................................................... 125
E-Mail (Outlook)
Anhang ....................................................... 326, 335
Anzahl Anhänge ............................................... 334
anzeigen ............................................................... 326
Betreff .................................................................... 326
Dialogfeld anzeigen ........................................ 323
einfaches Senden .............................................. 321
Empfänger ................................................. 322, 326
erzeugen ..................................................... 324, 326
Inhalt ..................................................................... 326
Kopieempfänger ............................................... 328
senden ................................................................... 326
Serie erzeugen .................................................... 326
Zellbereich senden ............................................ 328
Email1Address, ContactItem ............................ 336
Empty ......................................................................... 193
EncodeURL() ............................................................ 290
End If .......................................................................... 126
End Select ................................................................. 128
End Sub ....................................................... 24, 35, 160
End Type ................................................................... 177
End With ................................................................... 188
EndConnect(), ConnectorFormat .................... 228
Endung
bas ........................................................................... 183
csv ........................................................................... 298
doc .......................................................................... 310
docx ........................................................................ 310
frm ................................................................ 183, 368
frx .................................................................. 183, 368
gif ............................................................................ 217
jpg ........................................................................... 217
png .......................................................................... 217
xls .............................................................................. 45
xlsb ........................................................................... 40
xlsm .......................................................................... 26
xlsx ........................................................................... 25
EntireColumn
Insert() ..................................................................... 86
Range ................................................................ 86, 87
EntireRow
Insert() ..................................................................... 86
Range ................................................................ 86, 87
Entwickler ................................................................... 18
Entwicklungsumgebung ...................................... 31
EOF() ............................................................................ 297
EOF, Recordset (Access) ....................................... 346
EoMonth(), WorksheetFunction ..................... 278
Erase ............................................................................ 157
Ereignis ................................................................. 49, 97
Ereignisprozedur ............................................ 97, 365
Err ................................................................................ 143
Excel
Datei ......................................................................... 50
eigene Funktion ....................................... 159, 165
schließen .............................................................. 199
vor 2007 ................................................................. 45
Excel-Optionen ........................................................ 28
Exclamation ............................................................ 260
Execute(), Connection (Access) .............. 346, 347
Exit Do ............................................................. 134, 137
Exit For ....................................................................... 130
Exit Function ........................................................... 165
Exit Sub ............................................................ 143, 160
Export
in Datei ....................................................... 300, 301
Word ............................................................ 315, 316
Export()
ChartObject ......................................................... 219
Charts .................................................................... 217
Index
434
F
F1 ......................................................................... 103, 191
F2 .................................................................................. 185
F5 ................................................................. 33, 146, 367
F8 .................................................................................. 144
F9 .................................................................................. 146
False .................................................................. 107, 117
Farbe .................................................................... 81, 112
Farbskala, bedingte Formatierung ....... 237, 239
Fehler
-behandlung ....................................................... 139
logischer ............................................................... 144
-objekt ................................................................... 143
vermindern ............................................................ 32
Feld von Variablen ................................................ 149
FileCopy() .................................................................. 308
FileDateTime() ........................................................ 306
FileLen() ..................................................................... 306
Fill
ForeColor .............................................................. 224
Shape ..................................................................... 224
Filter ............................................................................ 200
mehrere Kategorien ......................................... 203
mit Platzhalter ................................................... 203
mit Vergleich ...................................................... 201
über zwei Spalten ............................................. 202
verknüpfter ......................................................... 201
FilterXML() ............................................................... 291
FirstName, ContactItem (Outlook) ................ 336
FitToPagesTall, PageSetup ................................... 67
FitToPagesWide, PageSetup ................................ 67
fmOrientationHorizontal .................................. 378
fmOrientationVertical ........................................ 379
fmSpecialEffectSunken ....................................... 379
fmStyleDropDownList ........................................ 378
Folder (Outlook) ..................................................... 332
Items ...................................................................... 332
Font
Bold .......................................................................... 81
Color ......................................................................... 81
Italic ......................................................................... 81
Name ....................................................................... 81
Range ....................................................................... 80
Size ............................................................................ 81
Subscript ................................................................. 82
Superscript ............................................................ 82
Underline ............................................................... 81
For Each .................................................................... 194
For Next ........................................................... 130, 151
ForeColor
Fill ........................................................................... 224
Line ........................................................................ 224
Format() ........................................................... 270, 379
FormatColor, ColorScaleCriteria .................... 238
FormatConditions ................................................ 236
Formatierung ......................................................... 270
bedingte ............................................................... 236
schachteln ........................................................... 381
Formel
Eingabe ................................................................ 256
lesen ....................................................................... 252
prüfen ................................................................... 252
zuweisen .............................................................. 251
Formula .................................................................... 251
FormulaLocal .......................................................... 251
Range ............................................................. 76, 249
FormulaR1C1 ........................................................... 251
FormulaR1C1Local ................................................. 252
Frame ......................................................................... 372
FreeformBuilder
AddNodes() ......................................................... 230
ConvertToShape() ............................................ 230
Freiform ........................................................... 222, 228
Knoten hinzufügen ......................................... 230
umwandeln ........................................................ 230
frm ..................................................................... 183, 368
frx ....................................................................... 183, 368
Function ................................................................... 164
Funktion ................................................ 159, 164, 249
aufrufen ............................................................... 165
aufrufen in anderer Datei ............................. 179
G
Ganze Zahl ............................................................... 107
Ganzzahldivision .................................................. 114
Gelb ............................................................................ 112
Geschachteltes With ............................................ 189
Gesendete Objekte, Outlook ............................ 330
GetAttr() .................................................................... 306
GetDefaultFolder(), Namespace
(Outlook) ............................................................. 332
GetNameSpace(), Application (Outlook) ..... 332
GetRecurrencePattern(), AppointmentItem
(Outlook) ............................................................. 341
Index
435
gif ................................................................................. 217
Gleich ......................................................................... 118
SQL ......................................................................... 350
Gleitkommazahl .................................................... 107
GoTo ........................................................................... 143
Größer als ................................................................. 117
SQL ......................................................................... 350
GroupItems, Shape ............................................... 248
Grün ........................................................................... 112
Gültigkeitsbereich .......... 106, 147, 162, 389, 399
benutzerdefinierter Datentyp ..................... 178
Prozeduren/Funktionen ................................ 180
H
Haltepunkt ............................................................... 146
HasLegend, Chart .................................................. 213
HasTitle
Axis ........................................................................ 213
Chart ...................................................................... 213
Height
ChartObject ......................................................... 215
Steuerelement .................................................... 368
Hex2...() ...................................................................... 287
Hexadezimal ........................................................... 287
Hierarchie darstellen ........................................... 247
Hilfe .................................................................. 103, 186
Hochformat ................................................................ 67
Hochstellen ................................................................ 82
HorizontalAlignment, Range .............................. 80
I
IconCriteria, FormatConditions ...................... 241
IconSet, FormatConditions ............................... 241
IconSetCondition .................................................. 241
If
Block ...................................................................... 125
einzeiliges ............................................................ 124
Import
aus Datei .................................................... 295, 297
Word ............................................................ 311, 313
In .................................................................................. 194
Index
Charts .................................................................... 211
Datenfeld ............................................................. 151
eindeutiger (Access) ......................................... 342
Index (Forts.)
Items (Outlook) .................................................. 332
Points ..................................................................... 214
SeriesCollection ................................................. 214
Shapes ................................................................... 222
Workbooks ............................................................ 57
Worksheets ............................................................ 60
Information ............................................................. 260
Innenbereich ............................................................. 84
Input, Datei lesen .................................................. 297
InputBox()
Application .......................................................... 254
einfache ................................................................ 253
INSERT (SQL) .................................................. 344, 357
Insert()
EntireRow/EntireColumn ................................ 86
Range ....................................................................... 85
InsideLineStyle, Borders (Word) ...................... 318
InStr() .......................................................................... 268
Integer ........................................................................ 107
Integriert
Dialogfeld ............................................................ 359
Konstante ............................................................ 112
Interior
ChartArea ............................................................ 213
Color ......................................................................... 84
Legend ................................................................... 213
PlotArea ................................................................ 213
Range ....................................................................... 84
Is ................................................................................... 128
IsDate() ....................................................................... 270
IsFormula() ............................................................... 252
IsNumeric() .............................................................. 269
IsoWeekNum() ........................................................ 281
Italic, Font ................................................................... 81
Items (Outlook)
(Index) ................................................................... 332
Count ..................................................................... 332
Folder ..................................................................... 332
J
Jahreskalender ........................................................ 278
Join() .................................................................. 272, 301
jpg ................................................................................ 217
Index
436
K
Kalenderwoche ....................................................... 281
Key1, Sortierschlüssel ............................................ 95
Kill() ............................................................................. 308
Klammerausdruck ...................................... 117, 123
Klassenmodul .................................................... 33, 97
Kleiner als ................................................................. 117
SQL .......................................................................... 350
Kombinationsfeld ................................................. 376
aktuelles Element ............................................. 378
Auswahl wechselt ............................................. 378
Elementnummer ............................................... 378
füllen ...................................................................... 378
Text des aktuellen Elements ......................... 378
Kommentar ............................................... 24, 34, 104
Kompatibilitätsprüfung ....................................... 47
Komponente ........................................................... 176
Konstante ................................................................. 111
integrierte ............................................................ 112
Kontakt
erzeugen (Outlook) .......................................... 336
speichern (Outlook) ......................................... 337
Kontrollausgabe ...................................................... 41
Kontrollkästchen ................................................... 372
Kontrollstruktur .......................................... 124, 129
Korrektur, automatische .................................... 103
Kreisdiagramm ...................................................... 208
L
Label ............................................................................ 369
SpecialEffect ........................................................ 379
Large() ......................................................................... 292
LargeChange, ScrollBar ....................................... 379
LastName, ContactItem (Outlook) ................. 336
Laufzeitfehler ................................................ 140, 295
lbl ................................................................................. 370
LBound() .................................................................... 174
Leerzeile .................................................................... 103
Left
ChartObject ......................................................... 215
Steuerelement .................................................... 368
Left() ............................................................................ 267
LeftFooter, PageSetup ............................................ 68
LeftHeader, PageSetup .......................................... 68
Legend
Border .................................................................... 213
Legend (Forts.)
Chart ..................................................................... 213
Interior ................................................................. 213
Len() ............................................................................ 267
Like ............................................................................. 118
LIKE (SQL) ................................................................. 351
Line
DashStyle ............................................................. 225
ForeColor ............................................................. 224
Shape ..................................................................... 224
TextFrame ........................................................... 225
Weight .................................................................. 224
Line Feed ..................................................................... 44
Line Input ................................................................. 297
LineStyle, Borders .................................................... 84
Linie ................................................................... 222, 225
Liniendiagramm ................................................... 208
Linksbündig ............................................................ 381
List(Index), ComboBox ....................................... 378
ListBox ...................................................................... 376
Listenfeld ................................................................. 376
aktuelles Element ............................................. 378
Auswahl wechselt ............................................ 378
Elementnummer .............................................. 378
füllen ..................................................................... 378
Text des aktuellen Elements ........................ 378
ListIndex, ComboBox ......................................... 378
Location, AppointmentItem (Outlook) ....... 339
Locked, TextBox .................................................... 377
Logischer Fehler .................................................... 144
Logischer Operator .............................................. 120
Lokale Variable ...................................................... 147
Long ............................................................................ 107
Loop ................................................................... 134, 137
Loop Until ....................................................... 134, 137
Loop While ...................................................... 133, 136
Löschabfrage (SQL) ............................................... 357
M
Magenta .................................................................... 113
MailItem (Outlook) .............................................. 326
Attachments ...................................................... 326
Bcc .......................................................................... 328
Body ....................................................................... 326
Display() ............................................................... 326
Send() .................................................................... 326
Subject .................................................................. 326
Index
437
MailItem (Outlook) (Forts.)
To ............................................................................ 326
Makro ............................................................................ 17
aktivieren ................................................................ 27
ansehen, vor 2007 ............................................... 46
aufzeichnen ........................................................... 20
aufzeichnen, Diagramm ................................ 210
aufzeichnen, vor 2007 ....................................... 45
ausführen ............................................................... 23
ausführen nicht möglich .................................. 27
ausführen per Button ........................................ 36
ausführen, vor 2007 ........................................... 46
deaktivieren ........................................................... 27
geht verloren ......................................................... 25
Name ................................................................ 21, 23
Sicherheit, vor 2007 ............................................ 47
speichern ................................................................. 25
speichern, vor 2007 ............................................ 46
überall benutzen .................................................. 39
Verzeichnis aktivieren ....................................... 29
zuweisen ................................................................. 36
Makrocode
ansehen ................................................................... 23
verändern ............................................................... 34
verstehen ................................................................ 34
Makrosicherheit ....................................................... 26
Button ...................................................................... 29
MarkerBackgroundColor
Point ...................................................................... 214
Series ...................................................................... 214
MarkerForegroundColor
Point ...................................................................... 214
Series ...................................................................... 214
MarkerStyle
Point ...................................................................... 214
Series ...................................................................... 214
Max() .......................................................................... 292
Max, ScrollBar ......................................................... 378
MaximumScale, Axis ........................................... 213
Me ................................................................................ 366
Mehrfachauswahl ................................................. 127
Memory .................................................................... 385
MergeCells ..................................................... 388, 399
Range ....................................................................... 80
Methode ............................................................. 49, 159
Mid() ................................................................. 267, 394
Min() ........................................................................... 292
Min, ScrollBar ......................................................... 378
Minidiagramm ....................................................... 243
MinimumScale, Axis ............................................ 213
Mod ............................................................................. 115
Modales Dialogfeld ............................................... 367
Modul
DieseArbeitsmappe ............................................ 33
einfügen .................................................................. 32
exportieren ................................................ 183, 368
importieren ............................................... 184, 368
löschen .................................................................. 183
Tabelle1 ................................................................... 33
Modularisierung .......................................... 159, 179
Modulo ...................................................................... 115
Modulweit, Variable ............................................. 147
Month() ...................................................................... 279
Move(), Worksheets ................................................ 62
MoveNext(), Recordset (Access) ...................... 346
MRound() .................................................................. 293
MsgBox() ............................................................ 43, 258
msoAutoShapeType ............................................. 223
msoConnectorStraight ....................................... 227
msoConnectorType .............................................. 227
msoEditingAuto ..................................................... 229
msoEditingType ..................................................... 229
msoLineDash .......................................................... 225
msoLineDashStyle ................................................ 225
msoSegmentCurve ............................................... 230
msoSegmentLine .................................................. 230
msoSegmentType ................................................. 230
msoShapeOval ........................................................ 224
msoShapeRectangle ............................................. 223
Multiplikation ......................................................... 113
Mustervergleich ..................................................... 118
N
Nachrichtenbox ....................................................... 43
Name
Chart ...................................................................... 208
Font .......................................................................... 81
von Variablen ..................................................... 106
Workbook .............................................................. 53
Name(), Datei umbenennen ............................. 308
Namensraum, Outlook ....................................... 332
Namespace, GetDefaultFolder() (Outlook) .. 332
NetworkDays() ........................................................ 281
NetworkDays_Intl() .............................................. 282
New ............................................................................. 192
Index
438
Next .................................................................. 130, 194
Nicht
logisches ............................................................... 120
logisches (SQL) ................................................... 350
Nordwind.mdb ....................................................... 200
Not ............................................................................... 120
NOT (SQL) ................................................................. 350
Nothing ..................................................................... 191
Now() .......................................................................... 199
NumberFormatLocal ........................................... 288
DataLabel ............................................................ 222
Range ....................................................................... 77
TickLabels ............................................................ 213
O
Object ............................................................... 107, 190
Objekt
allgemeines ......................................................... 185
-ansicht ................................................................. 366
Grundlagen ........................................................... 49
Haupt- ..................................................................... 50
kurzer Zugriff ...................................................... 188
neu erzeugen ............................................ 192, 197
referenzieren ....................................................... 187
Typ ermitteln ...................................................... 193
Verweis .................................................................. 190
Objektbibliothek
Access .................................................................... 342
Outlook ................................................................. 320
Word ...................................................................... 310
Objekthierarchie ............................ 50, 65, 187, 198
Outlook ................................................................. 319
Word ...................................................................... 309
Objektkatalog .......................................................... 185
Objektmodellreferenz ......................................... 186
Objektorientierung ................................................. 49
Objektvariable ........................................................ 190
Oct2...() ....................................................................... 287
Oder
logisches ............................................................... 120
logisches (SQL) ................................................... 350
Office-Schaltfläche .................................................. 25
Offset ............................................................................ 38
Range ....................................................................... 91
Oktal ........................................................................... 287
olContactItem ......................................................... 337
olFolderContacts ................................................... 336
olFolderSentMail .................................................. 332
olMonday ................................................................. 341
olRecursDaily ......................................................... 341
olRecursMonthly .................................................. 341
olRecursWeekly ..................................................... 341
olTuesday ................................................................. 341
On Error ........................................................... 140, 143
OnTime(), Application ........................................ 198
Open()
Connection (Access) ............................... 343, 346
Documents (Word) .......................................... 312
Workbooks ............................................................. 52
Open, Datei ..................................................... 297, 301
Operator ................................................................... 113
arithmetischer ................................................... 113
logischer .............................................................. 120
Operator (SQL) ....................................................... 350
Operatorenrangfolge .......................................... 167
Option Explicit ................................................ 32, 107
Optional .................................................................... 168
Optionsschaltfläche ............................................. 372
voreinstellen ...................................................... 373
Or ........................................................................ 120, 260
OR (SQL) .................................................................... 350
ORDER BY (SQL) ..................................................... 352
Order1, Sortierrichtung ......................................... 95
Orientation
PageSetup .............................................................. 67
Range ....................................................................... 80
ScrollBar .............................................................. 378
SpinButton .......................................................... 379
Outlook
Application ......................................................... 326
AppointmentItem ............................................ 339
Attachment ........................................................ 335
ContactItem ....................................................... 336
CreateItem() (AppointmentItem) .............. 339
CreateItem() (ContactItem) ......................... 337
CreateItem() (MailItem) ................................ 326
Datenaustausch ............................................... 319
E-Mail erzeugen ................................................ 324
Folder .................................................................... 332
Gesendete Objekte ........................................... 330
Kontakt erzeugen ............................................ 336
Kontakteigenschaften ................................... 336
MailItem .............................................................. 326
Namensraum ..................................................... 332
Objektbibliothek ............................................... 320
Index
439
Outlook (Forts.)
Objekthierarchie ............................................... 319
RecurrencePattern ........................................... 341
starten ................................................................... 326
Termin erzeugen ............................................... 337
Termineigenschaften ...................................... 339
Terminserie erzeugen ..................................... 339
Terminwiederholung ...................................... 341
Verzeichnis ermitteln ...................................... 332
Verzeichniseintrag ........................................... 332
Zugriff erlauben/verweigern ....................... 321
Output, Datei schreiben ..................................... 301
OutsideLineStyle, Borders (Word) .................. 318
Oval ............................................................................. 224
P
PageSetup
CenterHorizontally ............................................. 67
CenterVertically ................................................... 67
FitToPagesTall ...................................................... 67
FitToPagesWide ................................................... 67
Footer ....................................................................... 68
Header ..................................................................... 68
Orientation ............................................................ 67
PrintGridlines ........................................................ 67
PrintHeadings ....................................................... 67
Worksheets ............................................................. 66
Zoom ........................................................................ 67
Paragraphs (Word)
Add() ...................................................................... 316
Documents .......................................................... 312
Range .................................................................... 312
Parallele Aktionen ................................................ 284
ParamArray ............................................................. 172
Parameter ................................................................. 159
beliebig viele ....................................................... 172
benannter ..................................................... 62, 170
ist Datenfeld ....................................................... 174
optionale .............................................................. 168
Übergabe ............................................................. 163
Paste() ................................................................... 25, 35
PasteSpecial(), Range .............................................. 73
Path
Application ......................................................... 198
Workbook ............................................................... 58
PatternEndDate, RecurrencePattern
(Outlook) .............................................................. 341
PatternStartDate, RecurrencePattern
(Outlook) .............................................................. 341
Pause ........................................................................... 284
personal.xls ................................................................ 48
personal.xlsb ............................................................. 40
Persönliche Makroarbeitsmappe .............. 39, 51
vor 2007 ................................................................. 48
Perzentil .................................................................... 240
Pfad, Installation .................................................... 198
Platzhalter
Dateiname ........................................................... 303
Zeichenkette ........................................................ 118
Platzhalter (SQL) .................................................... 351
PlotArea
Chart ...................................................................... 213
Interior .................................................................. 213
png ............................................................................... 217
Point ........................................................................... 214
ApplyDataLabels() .................................. 214, 222
Border .................................................................... 214
DataLabel ............................................................ 222
MarkerBackgroundColor ............................... 214
MarkerForegroundColor ............................... 214
MarkerStyle ......................................................... 214
Points ......................................................................... 214
(Index) ................................................................... 214
SparklineGroups ............................................... 246
Points(), Series ........................................................ 214
Potenzierung ........................................................... 115
Preserve ..................................................................... 155
Primärschlüssel, Tabelle (Access) ................... 342
Print, Dateizeile schreiben ................................ 301
PrintGridlines, PageSetup .................................... 67
PrintHeadings, PageSetup ................................... 67
Priorität der Operatoren .................................... 122
Private Function .................................................... 180
Private Sub ............................................................... 180
Private Type ............................................................. 178
Programm
anhalten ............................................................... 146
unterbrechen ...................................................... 284
Programmabbruch ............................................... 140
Programmierstil .................................................... 103
Programmzeile in mehreren Zeilen .............. 105
Projekt-Explorer ...................................................... 32
Projektweite Variable .......................................... 147
Prozedur ................................................... 42, 159, 160
aufrufen ................................................................ 160
Index
440
Prozedur (Forts.)
aufrufen in anderer Datei ............................. 179
Name ....................................................................... 43
Prozess darstellen ................................................. 247
Public .......................................................................... 147
Public Type ............................................................... 178
Punkt nach Objektname .................................... 104
Q
Querformat ................................................................ 67
Question ................................................................... 260
Quit()
Application .......................................................... 199
Application (Outlook) ..................................... 326
R
RadioButton ............................................................ 372
Value ...................................................................... 374
Rahmen ..................................................................... 372
Liniendicke ............................................................ 84
Linienfarbe ............................................................ 84
Linienstil ................................................................. 84
Randomize ............................................................... 135
Randomize() .................................................. 391, 403
Range ....................................................... 24, 35, 50, 68
Borders .................................................................... 83
Cells .......................................................................... 71
Characters ............................................................. 82
Clear() ...................................................................... 74
ClearContents() .................................................... 74
ClearFormats() ..................................................... 74
Column ................................................................... 91
Columns ................................................................. 88
ColumnWidth ....................................................... 88
Copy() ...................................................................... 72
Count ....................................................................... 89
Cut() .......................................................................... 72
Delete() .................................................................... 86
EntireColumn ................................................ 86, 87
EntireRow ....................................................... 86, 87
Font .......................................................................... 80
FormulaLocal .............................................. 76, 249
HorizontalAlignment ....................................... 80
Insert() ..................................................................... 85
Interior .................................................................... 84
MergeCells ............................................................. 80
Range (Forts.)
NumberFormatLocal ......................................... 77
Offset ........................................................................ 91
Orientation ............................................................ 80
Paragraphs (Word) .......................................... 312
PasteSpecial() ........................................................ 73
Row ........................................................................... 91
RowHeight ............................................................. 88
Rows ......................................................................... 88
Select() ..................................................................... 71
Sort ............................................................................ 94
SpecialCells ............................................................ 89
Value .......................................................... 42, 71, 76
VerticalAlignment .............................................. 80
WrapText ................................................................ 80
Rangfolge ................................................................. 167
Rangfolge der Operatoren ................................. 122
Rechteck ................................................................... 223
Rechtsbündig ......................................................... 381
Recordset (Access)
ADODB ........................................................ 344, 345
Close() ................................................................... 346
EOF ......................................................................... 346
Feld erreichen .................................................... 346
MoveNext() ......................................................... 346
RecurrencePattern (Outlook) ........................... 341
DayofWeekMask .............................................. 341
PatternEndDate ................................................ 341
PatternStartDate .............................................. 341
RecurrenceType ................................................ 341
RecurrenceType ..................................................... 341
ReDim ........................................................................ 155
RefEdit ....................................................................... 381
Referenz, Übergabe per ...................................... 163
Referenzierung, Objekt ...................................... 187
Registerkarte
Ansicht .................................................................... 21
Entwicklertools ............................................. 28, 29
Relationale Datenbank ....................................... 341
Relative Aufzeichnung .......................................... 37
Relativer Zellbezug ............................................... 251
Remove(), Collection ........................................... 196
Replace(), WorksheetFunction ........................ 268
RerouteConnections(), Shapes ........................ 228
Resume Next .......................................................... 143
RetryCancel ............................................................. 260
RGB() ................................................................... 81, 113
Right() ........................................................................ 267
Index
441
RightFooter, PageSetup ......................................... 68
RightHeader, PageSetup ........................................ 68
Ringtausch ............................................................... 164
Rnd() ........................................................ 134, 391, 404
Roman() .................................................................... 294
Römische Ziffern ................................................... 294
Rot ............................................................................... 112
Rotation, Shape ...................................................... 224
Round() ...................................................................... 293
RoundDown() ......................................................... 293
RoundUp() ................................................................ 293
Row, Range .................................................................. 91
RowHeight, Range ................................................... 88
Rows
AutoFit ..................................................................... 88
Count (Word) ...................................................... 314
Range ....................................................................... 88
Table (Word) ....................................................... 314
Rückgabewert ............................................... 159, 165
Run(), Application ................................................. 182
Runden ...................................................................... 293
S
Säulendiagramm ................................................... 208
Save() (Outlook)
AppointmentItem ............................................ 339
ContactItem ....................................................... 337
SaveAs(), Documents (Word) ............................ 316
Schädlicher VBA-Code ............................................ 26
Schaltfläche ................................................................ 36
Schaltjahr ................................................................. 167
Schattierung ............................................................ 234
Schleife ............................................................ 129, 194
bedingungsgesteuerte .................................... 133
geschachtelte ..................................................... 153
kopf-/fußgesteuerte ........................................ 134
zählergesteuerte ............................................... 130
Schriftart, Eigenschaften ....................................... 80
Schrittweite ............................................................. 130
negative ............................................................... 132
Schwarz ..................................................................... 112
ScreenUpdating, Application ........................... 279
ScrollBar .................................................................... 376
Change() ............................................................... 379
Eigenschaften .................................................... 378
Search(), WorksheetFunction ........................... 268
Select ..................................................................... 24, 35
SELECT (SQL) ........................................ 344, 346, 348
Select Case ................................................................ 127
Select(), Range ........................................................... 71
Selection ............................................................... 24, 35
Send(), MailItem (Outlook) ................................ 326
SendMail(), Workbook ......................................... 322
Series .......................................................................... 213
ApplyDataLables() ............................................ 214
Border .................................................................... 214
MarkerBackgroundColor ............................... 214
MarkerForegroundColor ............................... 214
MarkerStyle ......................................................... 214
Points() .................................................................. 214
SeriesCollection ..................................................... 213
(Index) ................................................................... 214
SeriesCollection(), Chart ..................................... 213
SeriesColor, SparkLineGroups ......................... 245
Set ................................................................................ 191
SetRange(), Sort ........................................................ 97
SetSourceData(), Chart .............................. 208, 210
Shape .......................................................................... 222
Fill ............................................................................ 224
Line ......................................................................... 224
Rotation ................................................................ 224
Shapes ........................................................................ 222
(Index) ................................................................... 222
AddConnector() ....................................... 222, 227
AddLine() .................................................... 222, 225
AddShape() ................................................ 222, 223
alle .......................................................................... 231
BuildFreeform() ....................................... 222, 229
ConnectorFormat ............................................. 228
Count ..................................................................... 222
RerouteConnections() ..................................... 228
Sheets ......................................................................... 206
Shift + F2 .......................................................... 110, 162
Shift, Zellen verschieben ............................... 85, 86
Show()
Dialogs ........................................................ 323, 359
UserForm ............................................................. 367
Sicherheitscenter ..................................................... 29
Sicherheitswarnung ............................................... 27
Single .......................................................................... 107
Size, Font ..................................................................... 81
Small() ........................................................................ 292
SmallChange
ScrollBar ............................................................... 379
SpinButton .......................................................... 379
Index
442
SmartArt ................................................................... 247
Snake .......................................................................... 395
Sort
Objekt ...................................................................... 96
Range ....................................................................... 94
SortFields, Sort .......................................................... 96
Sortierschlüssel ............................................... 96, 189
Spaltennummer ....................................................... 71
Sparkline ................................................................... 243
alle Farben ........................................................... 246
formatieren ......................................................... 245
Gewinn/Verlust ................................................. 244
Linie ........................................................................ 243
Spalte ..................................................................... 244
SparkLineGroups ................................................... 243
SpecialCells, Range .................................................. 89
SpecialEffect, Label ................................................ 379
Speicherbedarf ............................................. 106, 107
Spiegelung ................................................................ 234
SpinButton ............................................................... 376
Eigenschaften ..................................................... 379
Split() ................................................................ 273, 298
SQL ............................................................................... 343
Fehlersuche ......................................................... 354
SQL-Befehl, senden ..................................... 346, 347
Start, AppointmentItem (Outlook) ................ 339
Statusleiste ................................................................. 22
Step .............................................................................. 130
Steuerelement
Abstand links ...................................................... 368
Abstand oben ..................................................... 368
Bezeichnungsfeld .............................................. 369
Bildlaufleiste ....................................................... 376
Breite ...................................................................... 368
Drehfeld ................................................................ 376
erzeugen ............................................................... 364
Farbe ...................................................................... 377
formatieren ......................................................... 369
Höhe ....................................................................... 368
Kombinationsfeld ............................................. 376
Kontrollkästchen .............................................. 372
kopieren ................................................................ 369
Listenfeld .............................................................. 376
Name ..................................................................... 365
Optionsschaltfläche ........................................ 372
Rahmen ................................................................ 372
RefEdit ................................................................... 381
-sammlung ............................................................ 36
Steuerelement (Forts.)
Textfeld ................................................................ 369
Titel ........................................................................ 365
ToggleButton ..................................................... 382
Wert ermitteln ................................................... 369
Zahl formatieren .............................................. 379
Strg .............................................................................. 100
Strg + Shift + F2 ............................................. 110, 162
String ......................................................................... 108
Structured Query Language ............................. 343
Style, ComboBox ................................................... 378
Sub ................................................................ 24, 35, 160
Sub/UserForm ausführen .................................... 33
Subject
AppointmentItem (Outlook) ....................... 339
MailItem (Outlook) ......................................... 326
Sub-Prozedur ............................................................. 41
Subscript, Font .......................................................... 82
Subtraktion ............................................................. 113
Suchmuster, Dateiname .................................... 303
Superscript, Font ...................................................... 82
Symbol
Aufzeichnung beenden ..................................... 22
Aufzeichnung beginnen ................................... 22
Auskommentierung aufheben ................... 104
Block auskommentieren ............................... 104
grüner Pfeil ............................................................ 34
Symbolleiste
bearbeiten .............................................................. 31
Visual Basic ........................................................... 47
Voreinstellung ...................................................... 31
Symbolsatz
alle .......................................................................... 242
bedingte Formatierung ................................. 240
Syntaxfehler ........................................................... 139
SystemModal .......................................................... 260
T
Tabelle
erzeugen (Word) ............................................... 318
Rahmen (Word) ................................................. 318
Tabelle1, Modul ......................................................... 33
Tabellenblatt ....................................................... 50, 60
aktives ..................................................................... 60
aktivieren ............................................................... 64
alle Zellen ........................................................ 64, 71
Druck skalieren .................................................... 67
Index
443
Tabellenblatt (Forts.)
Druck zentrieren .................................................. 67
Druckformat .......................................................... 67
Druckgröße anpassen ........................................ 67
Druckinformationen .......................................... 68
erzeugen .................................................................. 60
Gitternetzlinien ............................................ 65, 67
Kopf-/Fußzeile ...................................................... 68
kopieren .................................................................. 61
laufende Nummer ............................................... 60
löschen ..................................................................... 63
Name ........................................................................ 60
Seiteneinrichtung ................................................ 66
strukturieren ......................................................... 85
Überschriften Zeile/Spalte ....................... 65, 67
verschieben ............................................................ 62
wird aktiviert ......................................................... 99
wurde neu berechnet ...................................... 101
Tabellenfunktion .................................................. 249
Tabellenstruktur, Access .................................... 341
Table (Word) ............................................................ 314
Borders .................................................................. 318
Cell .......................................................................... 314
Columns ............................................................... 314
Rows ...................................................................... 314
Tables (Word)
Add() ...................................................................... 318
Documents .......................................................... 314
Tabulator .................................................................. 104
Target ......................................................................... 100
Address ....................................................... 394, 405
Taste
Alt + F11 .................................................................... 31
F1 ................................................................... 103, 191
F2 ............................................................................. 185
F5 ............................................................ 33, 146, 367
F8 ............................................................................. 144
F9 ............................................................................ 146
Shift + F2 ..................................................... 110, 162
Strg ......................................................................... 100
Strg + Shift + F2 ........................................ 110, 162
Tab .......................................................................... 104
Termin
erzeugen (Outlook) .......................................... 337
speichern (Outlook) ......................................... 339
Termineigenschaften (Outlook) ..................... 339
Terminserie erzeugen (Outlook) .................... 339
Terminwiederholung (Outlook) ..................... 341
Text
AxisTitle ................................................................ 213
ChartTitle ............................................................. 213
ComboBox ........................................................... 378
TextBox ................................................................. 371
TextBox ..................................................................... 369
BackColor ............................................................. 377
Locked ................................................................... 377
Text ......................................................................... 371
Textdatei
Datenaustausch ................................................ 295
lesen ....................................................................... 295
Texteffekt ................................................................. 234
Textfeld ..................................................................... 369
sperren .................................................................. 377
Textfilter ................................................................... 202
TextFrame
Characters ........................................................... 225
Line ......................................................................... 225
Then ............................................................................ 124
ThisWorkbook .......................................................... 50
TickLabels
Axis ......................................................................... 213
NumberFormatLocal ....................................... 213
Tiefstellen ................................................................... 82
Timer() ....................................................................... 284
TimeValue() ............................................................. 199
Titel, Steuerelement ............................................. 365
To ............................................................. 128, 130, 151
MailItem (Outlook) .......................................... 326
ToggleButton .......................................................... 382
Value ...................................................................... 383
Toolbox ..................................................................... 364
Top
ChartObject ......................................................... 215
Steuerelement .................................................... 368
True ................................................................... 107, 117
Trust Center ............................................................... 29
txt ................................................................................. 370
Type ............................................................................. 177
AddShape() .......................................................... 233
ColorScaleCriteria ............................................ 238
TypeName() ................................................... 110, 193
U
Übergabe von Parametern ................................ 163
UBound() ................................................................... 174
Index
444
Uhrzeit
aktuelle ................................................................. 199
-angabe ................................................................. 199
Umschaltfeld ........................................................... 382
Und
logisches ............................................................... 120
logisches (SQL) ................................................... 350
Underline, Font ........................................................ 81
Ungleich .................................................................... 118
SQL .......................................................................... 350
Unload ....................................................................... 366
UPDATE (SQL) ..................................... 344, 348, 355
URL-Format, codieren ......................................... 290
UsedRange, Worksheet ......................................... 88
UserForm .................................................................... 33
_Initialize() .......................................................... 373
erzeugen ............................................................... 364
Me ........................................................................... 366
Show() .................................................................... 367
V
Value
CheckBox ............................................................. 374
RadioButton ....................................................... 374
Range ......................................................... 42, 71, 76
ScrollBar ............................................................... 378
ToggleButton ...................................................... 383
Variable ..................................................................... 106
ausblenden .......................................................... 148
Datenfeld ............................................................. 149
Deklaration erforderlich ......................... 31, 107
Gültigkeitsbereich ............................................ 147
lokale ..................................................................... 147
modulweite ......................................................... 147
Objekt- ................................................................... 190
projektweite ........................................................ 147
Variant ................................................... 109, 110, 157
VBA ................................................................................ 17
vbAbort ...................................................................... 260
VBA-Funktion ......................................................... 249
vbArchive ................................................................. 307
vbBlack ....................................................................... 112
vbBlue ........................................................................ 113
vbCancel .................................................................... 260
vbCrLf ........................................................................... 44
vbCyan ....................................................................... 113
vbDirectory .............................................................. 307
VBE ................................................................................. 31
vbGreen .................................................................... 112
vbHidden ................................................................. 307
vbIgnore ................................................................... 260
vbMagenta ............................................................... 113
vbModeless ............................................................. 367
vbNo ........................................................................... 260
vbOK .......................................................................... 260
vbOkOnly ................................................................. 259
vbReadOnly ............................................................. 307
vbRed ......................................................................... 112
vbRetry ...................................................................... 260
vbSystem .................................................................. 307
vbWhite .................................................................... 113
vbYellow ................................................................... 112
vbYes .......................................................................... 260
Verbinder ........................................................ 222, 226
Verbindung, Datenbank (Access) ................... 342
Verbindungspunkt ............................................... 226
Vergleichsoperator ..................................... 117, 124
Verkettungsoperator .......................................... 121
Versatz .......................................................................... 38
VerticalAlignment, Range .................................... 80
Vertrauenscenter ..................................................... 29
Vertrauenswürdige Speicherorte ...................... 29
Verweis auf Objekt ...................................... 107, 190
Verzeichnis
-attribut ............................................................... 306
-eintrag (Outlook) ............................................ 332
ermitteln (Outlook) ......................................... 332
-funktionen ......................................................... 303
Verzweigung .................................................. 117, 124
Visible, Application (Word) ............................... 312
Visual Basic Editor ................................................... 31
Visual Basic for Applications .............................. 17
W
Wagenrücklauf .......................................................... 44
Wartezeit ......................................................... 394, 403
wdLineStyleSingle, Word ................................... 318
WebService() ........................................................... 290
Webservice, abrufen ............................................ 289
Weekday() ................................................................ 276
Weight
Borders .................................................................... 84
Line ........................................................................ 224
Weiß ........................................................................... 113
Index
445
Werkzeugsammlung ........................................... 364
Wert
größter .................................................................. 292
kleinster ................................................................ 292
Wertebereich .......................................................... 107
außerhalb ............................................................ 109
WHERE (SQL) ........................................................... 349
Width
ChartObject ......................................................... 215
Steuerelement .................................................... 368
Wiederholung ......................................................... 129
With ............................................................................ 188
geschachteltes ................................................... 189
Wochentag ermitteln .......................................... 276
Word
Absatz ................................................................... 312
Application ......................................................... 312
beenden ................................................................ 313
Datenaustausch ................................................ 309
Dokument öffnen ............................................. 312
Export .......................................................... 315, 316
Import ......................................................... 311, 313
Objektbibliothek ............................................... 310
Objekthierarchie ............................................... 309
starten ................................................................... 312
Table ...................................................................... 314
WordArt .................................................................... 234
Workbook .................................................................... 50
_BeforeClose() ....................................................... 98
_Open() .......................................................... 98, 368
Activate() ................................................................ 56
Codefenster ............................................................ 97
Name ........................................................................ 53
Path ........................................................................... 58
Save() ........................................................................ 56
SaveAs() ................................................................... 56
Saved ........................................................................ 57
SendMail() ........................................................... 322
Workbook_Open() ............................. 387, 397, 408
Workbooks .................................................................. 50
(Index) ...................................................................... 57
Add() ......................................................................... 51
Close() ....................................................................... 53
Count ........................................................................ 51
FullName ................................................................ 54
Open() ....................................................................... 52
WorkDay() ................................................................ 282
WorkDay_Intl() ...................................................... 282
Worksheet
_Activate() ............................................................. 99
_BeforeDoubleClick() ...................................... 100
_Calculate() ......................................................... 101
_SelectionChange() .......................................... 100
Codefenster ........................................................... 97
UsedRange ............................................................. 88
Worksheet_SelectionChange() .............. 393, 405
WorksheetFunction
Convert() ............................................................... 285
Count() .................................................................. 288
CountBlank() ...................................................... 288
EoMonth() ............................................................ 278
Replace() ............................................................... 268
Search() ................................................................. 268
Worksheet-Funktion ............................................ 249
Worksheets ......................................................... 50, 60
(Index) ..................................................................... 60
Activate() ................................................................ 64
Add() ......................................................................... 60
Copy() ...................................................................... 61
Delete() .................................................................... 63
Move() ..................................................................... 62
PageSetup .............................................................. 66
WrapText, Range ...................................................... 80
X
xlAnd .......................................................................... 202
xlAscending ............................................................... 95
xlBarClustered ........................................................ 208
xlBottom ..................................................................... 80
xlCategory ................................................................ 213
xlCellTypeBlanks ..................................................... 91
xlCellTypeFormulas ............................................... 91
xlCellTypeLastCell ................................................... 91
xlCenter ....................................................................... 80
xlColumnClustered .............................................. 208
xlColumns ................................................................ 208
xlConditionValueTypes ...................................... 238
xlContinuous ............................................................ 84
xlDescending ............................................................ 95
xlDialogFontProperties ...................................... 363
xlDialogOpen .......................................................... 360
xlDialogPatterns .................................................... 362
xlDialogSaveAs ....................................................... 361
xlDialogSendMail .................................................. 323
xlDot ............................................................................. 84
Index
446
xlDouble ...................................................................... 84
xlEdgeBottom ........................................................... 83
xlEdgeLeft ................................................................... 83
xlEdgeRight ................................................................ 83
xlEdgeTop ................................................................... 83
xlFilterValues .......................................................... 203
xlGuess ........................................................................ 95
xlHairline .................................................................... 84
xlInsideHorizontal ................................................. 83
xlInsideVertical ........................................................ 83
xlJustify ....................................................................... 80
xlLandscape ............................................................... 67
xlLeft ............................................................................. 80
xlLine .......................................................................... 208
xlMarkerStyleCircle .............................................. 214
xlMarkerStyleNone .............................................. 214
xlMarkerStyleSquare ........................................... 214
xlMedium ................................................................... 84
xlNo ............................................................................... 95
xlPasteFormats ........................................................ 73
xlPasteValues ............................................................ 73
xlPie ............................................................................ 208
xlPortrait .................................................................... 67
xlRight ......................................................................... 80
xlRows ........................................................................ 208
xls ................................................................................... 45
xlsb ................................................................................ 40
xlShiftDown .............................................................. 85
xlShiftToLeft .............................................................. 87
xlShiftToRight .......................................................... 85
xlShiftUp ..................................................................... 87
xlShowLabel ............................................................ 214
xlShowNone ............................................................ 214
xlShowValue ........................................................... 214
xlsm .............................................................................. 26
xlSparkColumn ...................................................... 244
xlSparkColumnStacked100 ............................... 244
xlSparkLine .............................................................. 243
XLStart ......................................................................... 40
xlsx ................................................................................ 25
xlThick ......................................................................... 84
xlThin ........................................................................... 84
xlTop ............................................................................. 80
xlValue ....................................................................... 213
xlVertical ..................................................................... 80
xlYes .............................................................................. 95
XML-Datei, filtern .................................................. 291
Xor ............................................................................... 120
Y
Year() .......................................................................... 279
YesNo ......................................................................... 260
YesNoCancel ........................................................... 260
Z
Zahl
Eingabe ................................................................ 255
erkennen .............................................................. 269
ganze ..................................................................... 107
umrechnen .......................................................... 287
umwandeln ........................................................ 269
Zahlenfilter .............................................................. 201
Zeichen einzeln formatieren .............................. 81
Zeichenkette ........................................................... 108
Funktionen ......................................................... 266
Länge ..................................................................... 267
Teilzeichenkette ermitteln ............................ 267
Teilzeichenkette ersetzen .............................. 268
Teilzeichenkette suchen ................................ 268
umwandeln ........................................................ 268
verketten .............................................................. 121
zerlegen ................................................................ 273
Zeichnungsobjekt ................................................. 222
Anzahl ................................................................... 222
Drehung ............................................................... 224
Form ............................................................. 222, 223
Freiform ............................................ 222, 229, 230
Füllfarbe ............................................................... 224
Füllung ................................................................. 224
Lage ....................................................................... 224
Linie .................................................... 222, 224, 225
Linienart .............................................................. 225
Liniendicke .......................................................... 224
Linienfarbe .......................................................... 224
Text ........................................................................ 225
Textrahmen ........................................................ 225
Typ ................................................................ 223, 224
Verbinder .................................................... 222, 227
Verbindung Anfang/Ende ............................ 228
Verbindung herstellen ................................... 228
Verbindungsart ................................................. 228
Zeile zerlegen ............................................................. 66
Zeilenmarke ............................................................ 143
Zeilennummer .......................................................... 71
Zeilenvorschub ......................................................... 44
Index
447
Zellbereich .......................................................... 50, 68
Adresse ..................................................................... 71
ausschneiden ........................................................ 35
Auswahl wird gewechselt ................................. 99
auswählen .............................................................. 71
besondere Zellen .................................................. 88
einfügen .................................................................. 85
einfügen ganze Zeile/Spalte ........................... 86
Eingabe ................................................................. 257
ermitteln .............................................................. 381
Formel eintragen .............................................. 249
hat Formel .............................................................. 91
Innenbereich ......................................................... 84
Innenfarbe .............................................................. 84
leere Zellen ermitteln ......................................... 91
leere Zellen zählen ........................................... 288
letzte Zelle ermitteln .......................................... 91
löschen ..................................................................... 86
löschen ganze Zeile/Spalte .............................. 87
Muster ...................................................................... 84
Nachbarzelle verschieben ................................ 85
optimale Zeile/Spalte ........................................ 88
per E-Mail senden (Outlook) ........................ 328
Rahmen ................................................................... 83
sortieren .................................................................. 94
Spaltenbreite ......................................................... 87
spezielle Zellen ...................................................... 89
unsichtbare Benutzung .................................... 88
Versatz ..................................................................... 91
verwendeter Bereich ........................................... 88
Zahlen zählen .................................................... 288
Zeilenhöhe .............................................................. 87
Zellen zählen ......................................................... 89
zusammenhängender ....................................... 68
Zellbezug, relativer ............................................... 251
Zelle ............................................................................... 68
Adresse ........................................................ 394, 405
ausgewählte ............................................. 393, 405
Spaltennummer .................................................. 91
wird doppelt geklickt ....................................... 100
Zeilennummer ...................................................... 91
Zellen, verbinden ................................................... 388
Zellhintergrund, Sparklines .............................. 243
Zellinhalt
ausrichten .............................................................. 79
ein-/mehrzeiliger ................................................ 80
einzelne Zeichen .................................................. 81
Formel eintragen ................................................ 76
kopieren .................................................................. 72
löschen .................................................................... 74
Muster-Dialog .................................................... 362
nur Format kopieren ......................................... 73
nur Format löschen ........................................... 74
nur Wert kopieren .............................................. 73
nur Wert löschen ................................................. 74
Schrift-Dialog ..................................................... 362
Schrifteigenschaften .......................................... 80
übereinander ........................................................ 80
verbinden ............................................................... 80
verschieben ........................................................... 72
Wert eintragen ..................................................... 76
Zoom, PageSetup ..................................................... 67
Zufallsgenerator ........................................... 391, 403
Zufallszahlengenerator ....................................... 134
Zuweisung ................................................................ 106
benutzerdefinierter Datentyp ...................... 178
Objekt .................................................................... 191
über Objekthierarchie ..................................... 191
Zwischenablage ................................................. 25, 35
Zyan ............................................................................ 113