VBA
- VB = Visual Basic
- VBA = Visual Basic for Applications: Spracherweiterung für (MS) Office Programme
Kommentare
- einzeilige Kommentare
' Das ist mein Kommentar
- mehrzeilige Kommenare gibts nicht, man muss jede Zeile mit ' anfangen.
- STRG-Pause unterbricht ein (endlos?) laufendes VBA-Programm
Links
Besonderheiten
- unterscheidet nicht zwischen Groß- und Kleinschreibung, Variablen müssen nicht zwangsläufig deklariert werden, sie bekommen dann den Typ
Variant
d.h. je nach den Daten ändert sich der Typ (das kostet aber viel Speicherplatz!). Außerdem kann es zu unvorhersehbaren Effekten kommen, also sollte man besser mit dem SatzOption explicit
(außerhalb aller Prozeduren und Funktionen) die genaue Deklaration erzwingen. - Kommentare leitet man mit ' (Hochkomma) ein
- Deklarieren:
Dim c As Double
- um z.B. Strukturen zu erweitern benutzt man ReDim: z.b.
ReDim Preserve Feld(51)
- (Leerzeichen)_ bedeutet der Code in nächster Zeile weitergeht
- Datentypen kann man auch mit speziellen Zeichen festlegen, z.B. # für double
- Verknüpfen von strings mit &
Objekte
Felder (Arrays)
Dim DasFeld1(30) as Integer
bzw. wenn 1 der unterste Wert sein soll:
Dim DasFeld1(1 to 30) as Integer
Schlüsselwörter
function ⇒ Funktion
Sub ⇒ Prozedur
Der Funktionsname ist gleichzeitig der Name der Variablen die den Rückgabewert enthält.
Tastenkombinationen
Tastenkombination | Wirkung |
---|---|
STRG-LEERTASTE | Vervollständigen des Namens |
Alt+F8 | Funktion/Prozedur ausführen |
STRG-Unterbr | Tastenkombination zum Abbrechen fehlerhafter Programme |
Alt-F11 | ruft die integrierte Entwicklungsumgebung auf |
Strings
- Vor dem Vergleichen von Strings:
- Trimmen (trim)
- auf Uppercase setzen (ucase)
sonst bekommt man falsche Ergebnisse, da Groß und Kleinschreibung unterschiedliche sein können
Anführungszeichen in string erhält man durch verdoppeln der Anführungszeichen.
Zugriff auf Zellen (Excel)
geht einfach im ausgewählten Tabellenblatt mit
Cells(Reihe, Spalte)
oder über Offset Reihe=256, Zelle B1 wäre also 257:
Cells(257)
Ansonsten mit fester Angabe von Tabellenblatt und Zelle(n):
Worksheets("Tabelle1").Range("A1:J10").Value = Hallo
Value ist eine Eigenschaft, es könnte auch z.B. Clear sein.
Typumwandlungen
Von (Datentyp) | zu (Datentyp) | Funktion |
---|---|---|
string | Zahl | val(STRING) funktioniert nicht bei allen Zeichenketten (abc123 wird NICHT zu 123 umgewandelt). Wenn die Umwandlung nicht möglich ist bzw. man nur Buchstaben hat, wird 0 zurück geliefert. |
? | Single | Csng |
? | String | Cstr |
? | Variant | CVar |
? | ? für Benutzer-Fehler-Codes | CVErr |
Ausdrücke ? | Format | |
Zahl | in Hexadezimal | Hex |
Zahl | inOctal | Oct |
Long | String ( Variant) | Str |
IsNummeric IsDate
CStr, Cdbl, …
Beispiele
Function test_a_b(a As Integer, b As Integer) test_a_b = a + b End Function
Tricks
Performance verbessern
' Application.ScreenUpdating = True CODE ' Application.ScreenUpdating = False