Inhalt | 6 |
Vorwort | 16 |
1 Grundlagen der VBA-Programmierung | 22 |
1.1 Allgemeiner Aufbau der Prozeduren | 22 |
1.1.1 Die Syntax einer Prozedur | 23 |
1.1.2 Kommentare | 24 |
1.1.3 Programmzeilen | 25 |
1.2 Variablen, Konstanten und Datentypen | 26 |
1.2.1 Eigene Datentypen | 28 |
1.2.2 Konstanten | 30 |
1.2.3 Datenfelder, Arrays | 30 |
1.2.4 Namensschilder für Schulungen | 34 |
1.3 Ein- und Ausgabe | 41 |
1.4 Operatoren, Verknüpfungen und Verzweigungen | 43 |
1.4.1 Operatoren | 43 |
1.4.2 Die Konjunktionen in VBA | 45 |
1.5 Verzweigungen | 46 |
1.5.1 Verzweigungen I | 46 |
1.5.2 Verzweigungen II | 47 |
1.5.3 Verzweigungen III | 48 |
1.5.4 Verzweigungen IV | 48 |
1.6 VBA-Funktionen | 51 |
1.6.1 Informationsabfragen | 52 |
1.6.2 Die mathematischen Funktionen | 52 |
1.6.3 Die String-Funktionen | 53 |
1.6.4 Die Uhrzeit- und Datumsfunktionen | 54 |
1.6.5 Die Funktion Format | 56 |
1.6.6 Umwandlungsfunktionen | 57 |
1.7 Selbst erzeugte Funktionen, Aufrufe und Parameterübergabe | 64 |
1.7.1 Aufruf | 64 |
1.7.2 Globale Variablen | 66 |
1.7.3 Übergabe | 66 |
1.8 Schleifen, rekursives Programmieren | 69 |
1.9 Fehler | 90 |
1.9.1 Programmierfehler | 90 |
1.9.2 Fehler zur Laufzeit | 93 |
1.10 Fazit | 106 |
2 Dialoge | 108 |
2.1 Dialoge | 108 |
2.1.1 Der Verkäuferstamm einer Firma | 108 |
2.1.2 Die Daten werden ausgelesen | 109 |
2.1.3 Neue Daten hinzufügen | 111 |
2.1.4 Daten löschen | 114 |
2.1.5 Plausibilitätsprüfung | 116 |
2.2 Ein weiteres Beispiel zu vielen Steuerelementen: ein Bewertungsformular | 123 |
2.2.1 Eingaben überprüfen | 128 |
2.2.2 Dialog schließen | 130 |
2.3 Viele „Kleinigkeiten“ | 131 |
2.3.1 Mehrspaltige Listenfelder | 131 |
2.3.2 Mauszeiger auf UserForm | 132 |
2.3.3 Das Rechenergebnis der Eingabe dynamisch anzeigen | 134 |
2.3.4 Andere Informationen dynamisch anzeigen | 134 |
2.3.5 Datenmerken (Suchen/Weitersuchen) | 138 |
2.3.6 Alberne Spielereien? | 141 |
2.3.7 UserFormen vergrößern und verkleinern | 147 |
2.3.8 Steuerelemente dynamisch erzeugen | 153 |
2.3.9 Multiseiten mit neu programmierten Steuerelementen | 157 |
2.3.10 Das Multiseiten-Objekt (allgemein) | 161 |
2.4 Excel-Dialoge | 163 |
2.5 Überwachte Ordner | 164 |
2.5.1 Fazit | 167 |
3 Klassen | 170 |
3.1 Was sind Klassen? | 170 |
3.2 Eigenschaften von Objekten | 172 |
3.3 Methode | 173 |
3.4 Überprüfen und Leeren | 176 |
3.5 Die Praxis | 177 |
3.6 Und Property Set? | 184 |
3.7 Sammlungen | 185 |
3.8 Mehrsprachige Oberflächen mit VBA realisieren | 185 |
3.9 Ereignisse in Klassen | 195 |
3.10 Fazit | 199 |
4 Der Makrorekorder | 200 |
4.1 Der Makrorekorder | 200 |
4.2 Der zweifelhafte Code des Makrorekorders | 203 |
4.2.1 Zu viel Code | 203 |
4.2.2 Nicht immer der beste Code | 205 |
4.2.3 Nicht immer Code | 206 |
4.2.4 Fehlerhafter Code | 206 |
4.2.5 Excel-VBA „hilft“ in VBA nicht immer | 207 |
4.2.6 Excel zeichnet „unscharf“ auf | 207 |
4.3 Fazit | 208 |
5 Das Excel-Objektmodell: Application | 210 |
5.1 Oberstes Objekt von Excel: Application | 210 |
5.1.1 Die Version | 215 |
5.1.2 Die Bildschirmanzeige | 216 |
5.1.3 Warnmeldungen | 216 |
5.1.4 Die verschiedenen Display-Eigenschaften | 217 |
5.1.5 Evaluate | 219 |
5.1.6 InputBox | 220 |
5.2 Fazit | 221 |
6 Das Excel-Objektmodell: Workbook | 222 |
6.1 ActiveWorkbook und ThisWorkbook | 222 |
6.1.1 Alle offenen Dateien | 222 |
6.1.2 Schließen | 223 |
6.1.3 Speichern | 224 |
6.1.4 Drucken | 226 |
6.1.5 Öffnen | 227 |
6.1.6 Neu | 230 |
6.1.7 Löschen | 234 |
6.2 Fazit | 235 |
7 Das Excel-Objektmodell: Worksheet | 236 |
7.1 Zugriff auf Tabellenblätter: Worksheet und Sheet | 236 |
7.1.1 Blätter: Wesen mit mehreren Namen | 237 |
7.1.2 Wichtige Methoden der Tabellenblätter | 238 |
7.1.3 Blätter löschen und neu erzeugen | 240 |
7.1.4 Blätter umbenennen | 243 |
7.1.5 Blätter kopieren und verschieben | 243 |
7.1.6 Blätter verbergen und schützen | 243 |
7.1.7 Blätter schützen | 245 |
7.1.8 Seite einrichten | 246 |
7.1.9 Existiert ein Blatt? | 250 |
7.2 Fazit | 256 |
8 Das Excel-Objektmodell: Range | 258 |
8.1 Zellen: Rows und Columns, Range und Cell | 259 |
8.1.1 Cell, Range, Selection, ActiveCell & Co | 259 |
8.1.2 „Bewegen“: Bereich verschieben | 262 |
8.1.3 Der Zellbezug verschwindet | 263 |
8.1.4 Kopieren, Ausschneiden und Einfügen | 264 |
8.1.5 Zeilen und Spalten | 265 |
8.1.6 Wie viele Zeilen (Spalten)? | 266 |
8.1.7 Zeilen oder Spalten ausfüllen | 268 |
8.1.8 Text, Value und Value2 | 271 |
8.1.9 Zellen und Zellinhalte löschen | 271 |
8.1.10 Zellfomate | 272 |
8.1.11 Kommentare | 278 |
8.2 Namen | 279 |
8.3 Beispiele | 281 |
8.3.1 Daten suchen | 281 |
8.3.2 Daten eintragen | 283 |
8.3.3 Listen synchronisieren | 284 |
8.4 Rechnen in Excel | 290 |
8.5 Zugriff auf Zeichen innerhalb einer Zelle | 295 |
8.6 Hilfsmittel in Excel | 297 |
8.6.1 Datenüberprüfung (Gültigkeit) | 297 |
8.6.2 Bedingte Formatierung | 300 |
8.6.3 Benutzerdefinierte Listen | 303 |
8.6.4 Autokorrektur | 306 |
8.7 Listen in Excel | 308 |
8.7.1 Daten sortieren | 308 |
8.7.2 Daten filtern: Autofilter und Spezialfilter | 311 |
8.7.3 Teilsummen | 318 |
8.7.4 Text in Spalten trennen | 320 |
8.8 Duplikate entfernen? | 322 |
8.8.1 Sortieren und Zeilen löschen | 322 |
8.8.2 Filtern ohne Duplikate | 323 |
8.8.3 Anzahl berechnen, filtern und löschen | 324 |
8.8.4 Pivottabelle | 326 |
8.8.5 RemoveDuplicates | 326 |
8.8.6 Bedingte Formatierung | 326 |
8.9 Fazit | 328 |
9 Eigene Funktionen erstellen | 330 |
9.1 Die Codeeingabe | 330 |
9.2 Folgende Funktionsklassen stehen in Excel zur Verfügung: | 331 |
9.2.1 Funktionen ohne Parameter | 331 |
9.2.2 Funktionen, die ein Argument verarbeiten | 333 |
9.2.3 Funktionen, die mehrere Argumente verarbeiten, die alle eingegeben werden müssen | 335 |
9.2.4 Funktionen mit mehreren Parametern, die nicht alle eingegeben werden müssen | 340 |
9.2.5 Funktionen, die mehrere Zellen oder Bereiche verarbeiten können | 344 |
9.2.6 Funktionen, die mehrere Werte zurückgeben | 346 |
9.3 Benutzerfehler in der Eingabe | 351 |
9.4 Die Anzeige im Funktionsassistenten | 352 |
9.5 Speichern der VBA-Funktionen | 354 |
9.6 Fazit | 355 |
10 Diagramme | 356 |
10.1 Die Aufgabe | 356 |
10.1.1 Die Objekte Chart und ChartObject | 358 |
10.1.2 Die Daten | 359 |
10.2 Fazit | 372 |
11 Pivottabellen | 376 |
11.1 Pivottabellen erzeugen | 376 |
11.2 Fazit | 388 |
12 Ribbons erstellen | 390 |
12.1 Das neue Datenformat | 390 |
12.2 Symbole einfügen | 392 |
12.3 Code | 394 |
12.4 Die Tags und ihre Attribute | 395 |
12.5 Beispiele | 399 |
12.5.1 labelControl | 399 |
12.5.2 button | 400 |
12.5.3 toggleButton und separator | 400 |
12.5.4 checkBox | 400 |
12.5.5 editBox | 400 |
12.5.6 dropDown mit buttons | 401 |
12.5.7 dropDown mit items | 401 |
12.5.8 comboBox mit items | 401 |
12.5.9 gallery | 402 |
12.5.10 menu und menuSeperator | 403 |
12.6 Die Ereignisse hinter den Symbolen | 404 |
12.7 Dynamische Symbole | 409 |
12.8 Eine Spielerei mit den Symbolen | 415 |
12.9 Mehrere Symbole in einer Gruppe | 420 |
12.10 Symbole in die Standardtabs einfügen | 420 |
12.11 Symbole – externe und interne | 425 |
12.12 Fazit | 431 |
13 Symbolleisten, Menüleisten und Tastenkombinationen | 434 |
13.1 Symbolleisten | 434 |
13.1.1 Alle Menüpunkte | 438 |
13.1.2 Vorhandene Menüs und Symbolleisten ändern | 439 |
13.1.3 Neue Menüs und Symbole erzeugen | 440 |
13.2 Tastenkombinationen | 454 |
13.3 Fazit | 456 |
14 Add-Ins | 458 |
14.1 Muss es immer ein Add-In sein? | 458 |
14.2 Weitere Dateien im Order XLStart | 461 |
14.3 Add-Ins mit Excel erstellen | 462 |
14.4 Add-Ins installieren oder deinstallieren | 464 |
14.5 Add-Ins verteilen | 465 |
14.6 Add-Ins mit Visual Studio | 465 |
14.6.1 Erstellen eines Add-Ins | 466 |
14.7 Add-Ins mit Aufgabenbereichen | 473 |
14.8 Fazit | 476 |
15 VBE | 478 |
15.1 Starten von Makros aus anderen Dateien | 478 |
15.2 Lesen und Schreiben von Makros aus anderen/in andere Dateien | 479 |
15.3 Eigene Menüpunkte im VBE erzeugen | 489 |
15.4 Fazit | 492 |
16 Makros starten und verteilen | 494 |
16.1 Schaltflächen in Tabellenblättern | 494 |
16.2 Ereignisse | 497 |
16.3 Die OnAction-Ereignisse | 506 |
16.4 Prozeduren global für Excel zur Verfügung stellen | 506 |
16.5 Makros verteilen | 507 |
16.6 Fazit | 508 |
17 VBA-Anwendungen für verschiedene Office- Versionen schreiben | 510 |
17.1 VBA-Anwendungen für verschiedene Office-Versionen schreiben | 511 |
17.1.1 Sprachkern | 511 |
17.1.2 Programmierumgebung | 514 |
17.1.3 Dialoge | 515 |
17.1.4 Symbole und Symbolleisten | 516 |
17.1.5 Office | 519 |
17.1.6 Achtung vor dem Makrorekorder! | 519 |
17.1.7 Ereignisse | 522 |
17.1.8 Einige Objekte | 522 |
17.1.9 Einbinden von Verweisen | 527 |
17.2 Fazit | 527 |
18 Internationale Anwendungen | 528 |
18.1 Trennzeichen | 529 |
18.2 Länderspezifische Datumsprobleme | 534 |
18.3 Formeln | 535 |
18.4 Fazit | 538 |
19 VBA und Sicherheit | 540 |
19.1 VBA und Sicherheit | 540 |
19.2 Makros verbergen | 543 |
19.3 Makros schützen | 543 |
19.4 Sicherheitseinstellungen ausschalten | 544 |
19.5 Polymorphe und mutierende Makroviren | 545 |
19.6 Wo finden sich die Einstellungen? | 546 |
19.7 Zusammenfassung | 547 |
19.8 Das Vertrauensstellungscenter | 547 |
19.8.1 Vertrauenswürdige Herausgeber | 547 |
19.8.2 Vertrauenswürdige Speicherorte | 547 |
19.8.3 Add-Ins | 548 |
19.8.4 ActiveX-Einstellungen | 549 |
19.8.5 Einstellungen für Makros | 550 |
19.8.6 Statusleiste | 551 |
19.8.7 Externer Inhalt | 552 |
19.8.8 Datenschutzoptionen | 552 |
19.9 Fazit | 554 |
20 Dateizugriff | 556 |
20.1 Dateizugriff | 556 |
20.2 Dateien löschen, kopieren, verschieben ... | 557 |
20.3 Das FileSearch-Objekt | 560 |
20.4 Informationen in Dateien schreiben und auslesen | 561 |
20.4.1 ini-Dateien | 561 |
20.4.2 Zugriff auf die Registry | 562 |
20.4.3 Sequenzielle Dateien | 564 |
20.4.4 Textdateien | 566 |
20.5 Daten „merken“ | 568 |
20.5.1 Dokumenteigenschaften | 568 |
20.5.2 Word: Dokumentvariablen | 572 |
20.5.3 Excel: verborgene Zellinhalte | 576 |
20.6 Fazit | 577 |
21 XML-Dokumente | 580 |
21.1 XML-Grundlagen | 580 |
21.1.1 Weitere Tags | 583 |
21.1.2 Der Zeichensatz | 586 |
21.1.3 CDATA-Abschnitte | 588 |
21.1.4 Kommentare | 589 |
21.1.5 Attribute | 591 |
21.1.6 Ein oder mehrere Attribute im Dokument | 591 |
21.1.7 Attribut oder Element? | 592 |
21.1.8 Microsoft Office und XML | 593 |
21.1.9 Zusammenfassung von XML | 594 |
21.2 XML, HTML und XSL – die Ausgabe | 595 |
21.2.1 XSL | 596 |
21.2.2 Der Aufbau einer XSL-Datei | 596 |
21.2.3 Mehrere Kind-Elemente anzeigen | 598 |
21.2.4 Alle Elemente einer Ebene anzeigen | 601 |
21.2.5 Attribute auslesen | 602 |
21.2.6 STYLE in SPAN und DIV | 603 |
21.2.7 Tabellen | 607 |
21.2.8 Daten sortieren | 611 |
21.2.9 Daten filtern | 611 |
21.2.10 Ebenen durchlaufen | 614 |
21.2.11 Entscheidungen | 615 |
21.2.12 Bilder | 623 |
21.2.13 Hyperlinks | 629 |
21.2.14 Zusammenfassung von XSL | 633 |
21.3 XML mit VBA lesen und schreiben | 634 |
21.3.1 Das DOM | 634 |
21.3.2 XML-Dokumente auslesen | 634 |
21.3.3 Zugriff auf Attribute | 635 |
21.3.4 Weitere XML-Elemente in VBA | 637 |
21.3.5 Durchlaufen von mehreren Ebenen | 642 |
21.3.6 Ein neues XML-Dokument erzeugen | 644 |
21.3.7 Neue Elemente erzeugen | 646 |
21.3.8 Erzeugen von XML-Objekten und Eigenschaften | 651 |
21.3.9 Löschen von Elementen im XML-Dokument | 654 |
21.3.10 Transformationen von XML mit dem DOM | 654 |
21.3.11 Mit dem DOM soll ein XML-Dokument transformiert werden | 657 |
21.3.12 Zusammenfassung VBA und XML | 662 |
21.4 Zwei Beispiele | 663 |
21.4.1 Erstes Beispiel: eine Literaturliste | 663 |
21.4.2 Zweites Beispiel: ein Speiseplan im Intranet | 676 |
21.4.3 Fazit | 686 |
22 API-Funktionen | 688 |
22.1 Das Windows API | 688 |
22.1.1 Aufruf einer API-Funktion | 688 |
22.1.2 Die Declare-Anweisung | 689 |
22.2 Beispiele für den Einsatz von APIs | 690 |
22.2.1 GetSystemMetrics | 690 |
22.2.2 SetTimer | 691 |
22.2.3 SHBrowseForFolder | 691 |
22.2.4 Registry | 695 |
22.2.5 Laufwerksart | 696 |
22.2.6 CD-ROM-Laufwerk öffnen und schließen | 697 |
22.2.7 Läuft ein Programm | 698 |
22.2.8 Es muss nicht immer eine API sein: Environ | 701 |
22.3 Fazit | 703 |
23 Excel und das Internet | 706 |
23.1 Excel als Browser | 706 |
23.2 Excel ruft einen Browser auf | 706 |
23.3 HTML-Export | 708 |
23.4 Daten per Mail versenden | 711 |
23.5 Fazit | 715 |
24 Ein Reporting-Tool mit Excel | 716 |
24.1 Die Teile des Reporting-Tools | 716 |
24.1.1 Ein neues Geschäftsjahr | 717 |
24.1.2 Daten auf Diskette sichern | 720 |
24.2 Die Datenauswertung | 722 |
24.2.1 Blätter löschen und neu erzeugen | 723 |
24.2.2 Daten schreiben und „merken“ | 725 |
24.2.3 Zahlen formatieren – deutsch oder US-amerikanisch | 727 |
24.2.4 Daten formatieren | 728 |
24.2.5 Formeln und Funktionen eintragen: deutsch oder US-amerikanisch | 731 |
24.2.6 Daten sortieren | 734 |
24.2.7 Teilergebnisse | 735 |
24.2.8 Spezialfilter | 736 |
24.2.9 Nachträgliche Korrekturen | 738 |
24.3 Daten zusammenfassen | 742 |
24.4 Neue Versionen verteilen | 747 |
24.5 Fazit | 751 |
25 Ein Vorlagen-Explorer | 754 |
25.1 Die Abteilungsmaske | 754 |
25.2 Favoriten | 763 |
25.3 Eigene Vorlagen | 766 |
25.4 Vorlagen suchen | 767 |
25.5 Fazit | 767 |
26 Kalender | 770 |
26.1 Der Gruppenkalender für Urlaube | 770 |
26.2 Kalender erstellen | 776 |
26.3 Fazit | 781 |
27 Datenaustausch zwischen den Programmen | 782 |
27.1 Ein Programm aus einem anderen starten | 782 |
27.2 Zugriff auf Office-Programme: Late Binding | 786 |
27.3 Early Binding | 790 |
27.4 Ein Rechnungsformular in Word | 794 |
27.5 Zeugnisse für Schulnoten | 802 |
27.6 Zugriff von PowerPoint auf Excel | 805 |
27.7 Outlook-Kontakte nach Excel schreiben | 814 |
27.8 Ein Termin nach Outlook | 817 |
27.9 Export von Visio-Daten nach Excel | 819 |
27.10 Eine Berichtsdatenbank – überwachte Ordner | 822 |
27.11 Fazit | 834 |
28 Vorschlag für eine VBA-Richtlinie | 836 |
28.1 Code | 836 |
28.1.1 Kommentare konsequent | 836 |
28.1.2 Namen | 837 |
28.1.3 Variablen, Variablennamen und ihre Deklaration | 838 |
28.1.4 Codezeilen | 839 |
28.1.5 Verkettungen | 839 |
28.1.6 Verzweigungen | 840 |
28.1.7 Rücken Sie konsequent ein | 840 |
28.1.8 Schleifen | 841 |
28.2 Programmierstil und Programmierstrategien | 842 |
28.2.1 Fehler abfangen | 842 |
28.2.2 Prozeduren und Routinen, Module und Klassen | 843 |
28.2.3 Objekte | 844 |
28.2.4 Programmierstil | 844 |
28.2.5 Strategien für die Benutzereingaben | 845 |
28.2.6 Strategien für die Datenausgabe | 846 |
28.2.7 Vor der Auslieferung | 846 |
28.3 Fazit | 847 |
29 Was noch fehlt | 848 |
29.1 Verbesserungen von MS Excel? | 848 |
29.2 Wenn ich mir was wünschen dürfte | 848 |
29.3 Fazit | 854 |
Register | 856 |