programmiersprachen:vba

VBA

  • VB = Visual Basic
  • VBA = Visual Basic for Applications: Spracherweiterung für (MS) Office Programme

Beispielcode

  • einzeilige Kommentare
     ' Das ist mein Kommentar
  • mehrzeilige Kommenare gibts nicht, man muss jede Zeile mit ' anfangen.
  • STRG-Pause unterbricht ein (endlos?) laufendes VBA-Programm
  • 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 Satz Option 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 &
Dim DasFeld1(30) as Integer

bzw. wenn 1 der unterste Wert sein soll:

Dim DasFeld1(1 to 30) as Integer

function ⇒ Funktion
Sub ⇒ Prozedur

Der Funktionsname ist gleichzeitig der Name der Variablen die den Rückgabewert enthält.

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
  • Vor dem Vergleichen von Strings:
    1. Trimmen (trim)
    2. 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.

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.

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

FIXME

IsNummeric IsDate

FIXME

CStr, Cdbl, …

 Function test_a_b(a As Integer, b As Integer)
 test_a_b = a + b
 End Function
' Application.ScreenUpdating = True
CODE
' Application.ScreenUpdating = False