# VBA in Excel

Dieses Buch steht im Regal Programmierung.

## Offlineversion (von diesem Buch)

Eine PDF-Version dieses Buches kann auf dieser Seite heruntergeladen werden (siehe oben am rechten Rand).

## Grundlegende Programmierkonzepte und Werkzeuge
### Namenskonventionen

* Wozu Namenskonventionen?
* Die Bestandteile eines Namens
* Die Variablentypen
* Die MS-Forms-Elemente
* Die Konstanten und benutzerdefinierte Typen
* Die Sprungmarken
* Prozeduren und Funktionen
* Kommentare

### Visual-Basic-Editor

* Der Editor
* Die Einstellungen
* Die Elemente
* Der Objektkatalog

## Programmiersyntax und dazugehörige Konzepte
### Prozeduren

* Begriffsbestimmung, Deklaration und Parameter
* Benutzerdefinierte Funktionen (UDF)
* Subs
* Wann sind Funktionen und wann sind Subs einzusetzen?

### Funktionen

* Arten der Funktionen
* Einsatz von Excel-Funktionen
** Verwendung innerhalb von VBA-Prozeduren
** Verwendung im Arbeitsblatt
* Einsatz von VBA-Funktionen
** Verwendung innerhalb von VBA-Prozeduren
** Verwendung im Arbeitsblatt
* Einsatz von benutzerdefinierten Funktionen (UDF)
** Verwendung innerhalb von VBA-Prozeduren
** Verwendung im Arbeitsblatt
** Übergabe von Bereichen

### Prozeduraufrufe

* Die Aufruf-Syntax
* Die Programmierbeispiele
** Aufruf eines Makros in der aktuellen Arbeitsmappe ohne Parameterübergabe
** Aufruf einer Funktion in der aktuellen Arbeitsmappe mit Parameterübergabe
** Aufruf eines Makros in einer anderen Arbeitsmappe ohne Parameterübergabe
** Aufruf einer Funktion in einer anderen Arbeitsmappe mit Parameterübergabe
** Aufruf eines Makros in einem Klassenmodul einer anderen Arbeitsmappe
** Word-Makro aus Excel-Arbeitsmappe aufrufen
** Access-Makro aus Excel-Arbeitsmappe aufrufen
** Aufruf von Prozeduren in der aktuellen Arbeitsmappe mit variablen Makronamen

### Gültigkeit von Variablen und Konstanten

* Die Gültigkeit:
* Die Programmierbeispiele
** Deklaration auf Prozedurebene
** Deklaration auf Modulebene
** Statische Variable
** Public-Variable
** Übergabe von Variablen an eine Funktion
** ByRef-Verarbeitung in einem Unterprogramm
** Übergabe von Variablen an eine andere Arbeitsmappe
** Variablen füllen und zurücksetzen
** Konstanten auf Prozedurebene
** Public-Konstanten
** Übergabe eines variablen Wertes an eine Konstante

### ByRef und ByVal

* Zu ByRef und ByVal
* Die Programmierbeispiele
** Aufruf einer benutzerdefinierten Funktion ohne ByRef/ByVal-Festlegung
** Aufruf eines Unterprogramms ohne ByRef/ByVal-Festlegung
** Aufruf mit einer Integer-Variablen bei Anwendung von ByVal
** Aufruf mit einer Integer-Variablen bei Anwendung von ByRef
** Aufruf mit einer String-Variablen bei Anwendung von ByVal
** Aufruf mit einer String-Variablen bei Anwendung von ByRef
** Aufruf mit einer Objekt-Variablen bei Anwendung von ByVal
** Aufruf mit einer Objekt-Variablen bei Anwendung von ByRef

### Selektieren und Aktivieren

* Selection, muss das sein?
* Worum geht es hier?
* Wieso ist das Selektieren so verbreitet?
* Selektieren und Referenzieren aufgrund unterschiedlichen Denkens?
* Warum soll nicht selektiert werden?
* In welchen Fällen sollte selektiert werden?
* Wie kann ich das Selektieren verhindern?

### Schleifen und Wenn-Abfragen
#### Schleifen

* Einfache Schleife zum Eintragen von Zahlen in eine Tabelle
* Einfache Schleife zum Eintragen von Wochentagen in eine Tabelle
* Schleife zum Eintragen einer zu ermittelnden Anzahl von Tagen
* Verschachtelte Schleife zum Eintragen des aktuellen Kalenderjahres
* Do-Schleifen
* Do-While-Schleifen
* Do-Until-Schleifen
* For-Each-Schleifen

#### Wenn-Abfragen

* Einfachste Abfrage
* Wenn-/Sonst-Abfrage
* Wenn-SonstWenn-Abfrage
* Select-Case-Abfrage

#### Kombination von Schleifen und Wenn-Bedingungen

* Erste leere Zelle ermitteln
* UserForm-Optionsfeld nach Tageszeit aktivieren
* Aktiviertes UserForm-Optionsfeld ermitteln

#### Schleifen und Matrizen

* Eindimensionale vordimensionierte Matrix füllen
* Eindimensionale Matrix mit vorgegebenem Wert dimensionieren und füllen
* Mehrdimensionale Matrix füllen

### Variablen und Arrays

* Grundlegendes
* Konstanten
* Variablentypen
* Variablendeklaration
* Einsatz von String-Variablen
* Einsatz von Variant-Variablen
* Einsatz von Public-Variablen
* Übergabe von String-Variablen
* Variablen in Funktionen
* Hierarchische Anordnung der Objekttyp-Variablen
* Collections von Objekttyp-Variablen
* Arrays und Feldvariablen

### Klassenmodule

* Die Module
* Allgemeingültiges Worksheet Change-Ereignis
* Eine Ereignisprozedur für mehrere CommandButtons
* Ein- und Auslesen einer Kundenliste
* Ereignissteuerung einer Serie von Labels

## weitergehende Programmierkonzepte
### Code-Optimierung

* Konstanten
* Objektindex
* Direkte Objektzuweisungen
* Selektieren
* Keine eckigen Klammern
* Direkte Referenzierung
* Dimensionierung
* With-Rahmen
* Excel-Funktionen
* Array-Formeln

## Programmierbeispiele und Prozedurvorlagen
### Menü- und Symbolleisten

* Grundsätzliches
* Beispiele für das VBA-Handling von CommandBars
* Menüleiste ein-/ausblenden
* Neue Menüleiste erstellen und einblenden
* Alle Menüleisten ein-/ausblenden
* Jahreskalender als Symbolleiste erstellen bzw. löschen
* Alle Menü- und Symbolleisten auflisten
* Jahreskalender bei Blattwechsel anlegen bzw. löschen
* Dateinamen der *.xlb-Datei ermitteln
* Dateiänderungsdatum der *.xlb-Datei ermitteln

### Dateieigenschaften

* Über Dateieigenschaften
* Programmierbeispiele
* Dateieigenschaften lesen
* Dateieigenschaften schreiben

### Leeren und Löschen von Zellen

* Löschen aller leeren Zellen einer Spalte
* Löschen der Zeile, wenn Zelle in Spalte A leer ist
* Löschen aller leeren Zeilen
* FehlerZellen leeren
* FehlerZellen löschen
* Löschen aller Zellen in Spalte A mit "hallo" im Text
* Leeren aller Zelle mit gelbem Hintergrund
* Alle leeren Zellen löschen

### XL4-Makros in VBA verwenden

* Auslesen eines Wertes aus geschlossener Arbeitsmappe
* Auslesen des ANZAHL2-Wertes aus geschlossener Arbeitsmappe
* Auslesen einer Summe aus geschlossener Arbeitsmappe
* Auslesen eines SVERWEIS-Wertes aus geschlossener Arbeitsmappe
* Auslesen einer Tabelle aus geschlossener und Einlesen in neue Arbeitsmappe
* SVERWEIS aus XL4 anwenden
* Namen über XL4 erstellen und ausblenden
* Benannte Formel über XL4 anlegen und aufrufen
* Routine zum Erstellen, Aufrufen und Löschen der Kalenderwochen-Formel
* Druckprogrammierung über XL4-Makros
* Schließen der Arbeitsmappe verhindern
* Arbeitsblattmenüleiste zurücksetzen
* Bedingtes Löschen von Zeilen

### Textimport

* Import zur Anzeige in MsgBoxes
* Import zur Konvertierung in eine HTML-Seite
* Import zur Anzeige in einem Arbeitsblatt
* Import zur Übernahme in UserForm-Controls

### Sortieren

* Schnelle VBA-Sortierroutine
* Dialog zur Verzeichnisauswahl
* Auslesen der Dateinamen in einem Verzeichnis
* Sortieren der Dateien eines Verzeichnisses nach Dateiname
* Sortieren der Dateien eines Verzeichnisses nach Dateidatum
* Sortieren der Arbeitsblätter der aktiven Arbeitsmappe
* Sortieren einer Tabelle nach einer benutzerdefinierten Sortierfolge
* Sortieren einer Datums-Tabelle ohne Einsatz der Excel-Sortierung
* Sortieren einer Tabelle nach sechs Sortierkriterien
* Sortieren mit Ae vor Ä und Sch vor S
* Sortieren nach der Häufigkeit des Vorkommens
* Sortieren einschließlich der ausgeblendeten Zeilen
* Sortieren mehrerer Tabellenblattbereiche
* Direkter Aufruf des Sortierdialogs

### Beispiele für Schleifen

* Über Schleifen
* Schleifentypen-Beispiele
** Zählschleifen
** Vorangestellte Bedingungsprüfung
** Nachgestellte Bedingungsprüfung
* Objektbezogene Beispiele
** Einsatz bei Arbeitsmappen- und Tabellenobjekte
** Einsatz bei tabellenintegrierten Steuerelement-Objekten
** Einsatz bei Userform-Steuerelement-Objekten

### Rechtschreibprüfung

* Die CheckSpelling-Methode
* Wort prüfen
* Wort auf englisch prüfen
* Steuerelement-TextBox prüfen
* Zeichnen-TextBox global prüfen
* Zeichnen-TextBox einzeln prüfen
* Zellbereich prüfen
* Gültigkeitsfestlegungen prüfen
* UserForm-TextBox prüfen
* UserForm-TextBox prüfen
* Bei Eingabe Rechtschreibprüfung aufrufen
* Bei Doppelklick Rechtschreibprüfung aufrufen
* Beim Schließen jeder Arbeitsmappe eine Rechtschreibprüfung durchführen
** Im Klassenmodul der Arbeitsmappe
** In einem Klassenmodul mit dem Namen clsApp

## Anhang

* Weitere unsortierte Beispiele