Zum Inhalt springen

VBA Compiler Syntaxreferenz

Dieses Dokument bietet eine Referenz für die vom VBA Compiler von XLS Padlock unterstützte VBA-Syntax.

Die Skriptstruktur besteht aus Deklarationen von Funktionen und Subroutinen (Sub).

SUB DoSomething
CallSomething
END SUB
FUNCTION MyFunction
MyFunction = "Ok!"
END FUNCTION

Anweisungen in einer einzelnen Zeile können durch das Zeichen : getrennt werden.


Kommentare können in ein Skript eingefügt werden. Sie können das Zeichen ' oder REM verwenden. Der Kommentar erstreckt sich bis zum Ende der Zeile.

' This is a comment before ShowMessage
ShowMessage("Ok")
REM This is another comment
ShowMessage("More ok!")

Bezeichnernamen (Variablen, Funktionen, Prozeduren usw.) müssen mit einem Buchstaben (a-z, A-Z) oder einem Unterstrich _ beginnen. Darauf können alphanumerische Zeichen oder Unterstriche folgen. Namen dürfen keine anderen Zeichen oder Leerzeichen enthalten.


Es ist nicht erforderlich, Variablen in einem Skript zu deklarieren, aber wenn Sie möchten, können Sie eine Variable mit der Direktive DIM deklarieren.

SUB Msg(Param1)
DIM S
S = "Hello world!"
ShowMessage(S)
END SUB

Sie können globale Variablen auch als PRIVATE oder PUBLIC deklarieren.

PRIVATE A
PUBLIC B
B = 0
A = B + 1
ShowMessage(A)

Mit DIM deklarierte Variablen sind standardmäßig öffentlich. Private Variablen sind aus anderen Skripten nicht zugänglich. Variablen können auch bei der Deklaration initialisiert werden:

DIM A = "Hello world"
DIM B As Integer = 5

Zuweisungsanweisungen verwenden den Operator =, um einer Variablen oder einer Objekteigenschaft einen Wert oder ein Ausdrucksergebnis zuzuweisen.

MyVar = 2
Application.Range("C4").Value = "This " + "is ok."

Der Compiler bietet eine grundlegende Unterstützung für Array-Konstruktoren und Variant-Arrays. Um ein Array zu konstruieren, verwenden Sie die Zeichen [ und ]. Sie können ein mehrdimensionales Array konstruieren, indem Sie Array-Konstruktoren verschachteln.

Arrays im Compiler sind 0-basiert indiziert.

NewArray = [ 2,4,6,8 ]
Num = NewArray[1] 'Num receives 4
MultiArray = [ ["green","red","blue"] , ["apple","orange","lemon"] ]
Str = MultiArray[0,2] 'Str receives "blue"
MultiArray[1,1] = "new orange"

Dynamische Arrays:

' Create a dynamic array
DIM PTIM = VarArrayCreate([0,3000,0,5], 12)
' Assign a value:
PTIM[1,2] = 1530

Zeichenketten, Arrays und Array-Eigenschaften können mit den Zeichen [ und ] indiziert werden. Wenn Str beispielsweise eine Zeichenkettenvariable ist, gibt der Ausdruck Str[3] das dritte Zeichen der Zeichenkette zurück.

MyChar = MyStr[2]
MyStr[1] = "A"
MyArray[1,2] = 1530

Die Basic-Syntax unterstützt:

  • Deklarationen: SUB...END SUB, FUNCTION...END FUNCTION
  • Direktiven: BYREF, DIM
  • Bedingungen: IF...THEN...ELSE...ELSEIF...END IF, SELECT CASE...END SELECT
  • Schleifen: FOR...TO...STEP...NEXT, DO...WHILE...LOOP, DO...LOOP...WHILE, DO...UNTIL...LOOP, DO...LOOP...UNTIL
  • Operatoren: ^, *, /, AND, +, -, OR, <>, >=, <=, =, >, <, DIV, MOD, XOR, SHL, SHR
  • Fehlerbehandlung: TRY...EXCEPT, TRY...FINALLY
  • Sonstiges: EXIT, Array-Konstruktoren [1, 2, 3], Objektzugriff ObjectName.Property

Es gibt zwei Formen: IF...THEN...END IF und IF...THEN...ELSE...END IF. Wenn der Ausdruck wahr ist, werden die THEN-Anweisungen ausgeführt. Wenn er falsch ist, werden die ELSE-Anweisungen ausgeführt (sofern vorhanden).

IF J <> 0 THEN
Result = I/J
END IF
IF J = 0 THEN
Exit
ELSE
Result = I/J
END IF

Wenn die Anweisung in einer einzelnen Zeile steht, benötigen Sie kein END IF:

IF J <> 0 THEN Result = I/J

Wenn die selectorExpression mit einem der caseexpr-Ausdrücke übereinstimmt, werden die jeweiligen Anweisungen ausgeführt. Andernfalls wird die CASE ELSE-Anweisung ausgeführt.

SELECT CASE uppercase(Fruit)
CASE "lime"
ShowMessage("green")
CASE "orange"
ShowMessage("orange")
CASE ELSE
ShowMessage("black")
END SELECT

Die FOR-Anweisung wiederholt die Ausführung von Anweisungen, bis ein Zähler einen Endwert erreicht.

FOR counter = initialValue TO finalValue STEP stepValue
Statements
NEXT

Der STEP-Teil ist optional; wird er weggelassen, beträgt der Schrittwert 1.

FOR c = 1 TO 10 STEP 2
a = a + c
NEXT

Eine WHILE-Anweisung wiederholt Anweisungen, solange eine Steuerbedingung wahr ist. Die Bedingung wird vor der Ausführung der Anweisungen ausgewertet.

WHILE (Data[I] <> X)
I = I + 1
END WHILE

Anweisungen werden ausgeführt, WHILE (solange) ein Ausdruck wahr ist, oder UNTIL (bis) ein Ausdruck wahr ist. Die Bedingung kann vor oder nach der Iteration geprüft werden.

' Condition tested after
DO
K = I mod J
I = J
J = K
LOOP UNTIL J = 0
' Condition tested before
DO WHILE I < 0
...
LOOP

Deklarationen von Funktionen und Subroutinen

Section titled “Deklarationen von Funktionen und Subroutinen”

Die Deklarationen ähneln dem Standard-Basic. Um einen Wert aus einer Funktion zurückzugeben, weisen Sie ihn der impliziten Variablen mit demselben Namen wie die Funktion zu oder verwenden Sie die Return-Anweisung. Parameter können mit der Direktive BYREF per Referenz übergeben werden.

SUB HelloWord
ShowMessage("Hello world!")
END SUB
FUNCTION Max(A,B)
IF A > B THEN
MAX = A
ELSE
MAX = B
END IF
END FUNCTION
SUB SwapValues(BYREF A, B)
DIM TEMP
TEMP = A
A = B
B = TEMP
END SUB

Subroutinen (Sub) und Funktionen sind standardmäßig öffentlich, können aber als PRIVATE deklariert werden.