VBA Compiler Syntaxreferenz
Dieses Dokument bietet eine Referenz für die vom VBA Compiler von XLS Padlock unterstützte VBA-Syntax.
Skriptstruktur
Section titled “Skriptstruktur”Die Skriptstruktur besteht aus Deklarationen von Funktionen und Subroutinen (Sub).
SUB DoSomething CallSomethingEND SUB
FUNCTION MyFunction MyFunction = "Ok!"END FUNCTIONAnweisungen in einer einzelnen Zeile können durch das Zeichen : getrennt werden.
Kommentare
Section titled “Kommentare”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 ShowMessageShowMessage("Ok")
REM This is another commentShowMessage("More ok!")Bezeichner
Section titled “Bezeichner”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.
Variablen
Section titled “Variablen”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 SUBSie können globale Variablen auch als PRIVATE oder PUBLIC deklarieren.
PRIVATE APUBLIC BB = 0A = B + 1ShowMessage(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 = 5Zuweisungsanweisungen
Section titled “Zuweisungsanweisungen”Zuweisungsanweisungen verwenden den Operator =, um einer Variablen oder einer Objekteigenschaft einen Wert oder ein Ausdrucksergebnis zuzuweisen.
MyVar = 2Application.Range("C4").Value = "This " + "is ok."Arrays
Section titled “Arrays”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 arrayDIM PTIM = VarArrayCreate([0,3000,0,5], 12)' Assign a value:PTIM[1,2] = 1530Indizes
Section titled “Indizes”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] = 1530Schlüsselwörter und Operatoren
Section titled “Schlüsselwörter und Operatoren”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], ObjektzugriffObjectName.Property
If-Anweisungen
Section titled “If-Anweisungen”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/JEND IF
IF J = 0 THEN ExitELSE Result = I/JEND IFWenn die Anweisung in einer einzelnen Zeile steht, benötigen Sie kein END IF:
IF J <> 0 THEN Result = I/JSelect Case-Anweisungen
Section titled “Select Case-Anweisungen”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 SELECTFor-Anweisungen
Section titled “For-Anweisungen”Die FOR-Anweisung wiederholt die Ausführung von Anweisungen, bis ein Zähler einen Endwert erreicht.
FOR counter = initialValue TO finalValue STEP stepValue StatementsNEXTDer STEP-Teil ist optional; wird er weggelassen, beträgt der Schrittwert 1.
FOR c = 1 TO 10 STEP 2 a = a + cNEXTWhile-Anweisungen
Section titled “While-Anweisungen”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 + 1END WHILEDo...Loop-Anweisungen
Section titled “Do...Loop-Anweisungen”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 afterDO K = I mod J I = J J = KLOOP UNTIL J = 0
' Condition tested beforeDO WHILE I < 0 ...LOOPDeklarationen 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 IFEND FUNCTION
SUB SwapValues(BYREF A, B) DIM TEMP TEMP = A A = B B = TEMPEND SUBSubroutinen (Sub) und Funktionen sind standardmäßig öffentlich, können aber als PRIVATE deklariert werden.