Ga naar inhoud

VBA Compiler syntaxreferentie

Dit document biedt een referentie voor de VBA-syntaxis die door de VBA Compiler van XLS Padlock wordt ondersteund.

De scriptstructuur bestaat uit declaraties van functies en subroutines (sub).

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

Instructies op een enkele regel kunnen worden gescheiden door het teken :.


U kunt opmerkingen in een script invoegen. U kunt het teken ' of REM gebruiken. De opmerking loopt door tot het einde van de regel.

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

Namen van identifiers (variabelen, functies, procedures enzovoort) moeten beginnen met een letter (a-z, A-Z) of een onderstrepingsteken _. Daarop kunnen alfanumerieke tekens of onderstrepingstekens volgen. Namen mogen geen andere tekens of spaties bevatten.


Het is niet nodig om variabelen in een script te declareren, maar als u dat wilt, kunt u een variabele declareren met de directive DIM.

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

U kunt globale variabelen ook als PRIVATE of PUBLIC declareren.

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

Variabelen die met DIM zijn gedeclareerd, zijn standaard openbaar. Privévariabelen zijn niet toegankelijk vanuit andere scripts. Variabelen kunnen ook bij de declaratie worden geïnitialiseerd:

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

Toewijzingsinstructies gebruiken de operator = om een waarde of het resultaat van een expressie toe te wijzen aan een variabele of een objecteigenschap.

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

De compiler biedt basisondersteuning voor array-constructors en variant-arrays. Om een array te construeren, gebruikt u de tekens [ en ]. U kunt een meerdimensionale array construeren door array-constructors te nesten.

Arrays in de compiler zijn 0-gebaseerd geïndexeerd.

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

Tekenreeksen, arrays en array-eigenschappen kunnen worden geïndexeerd met de tekens [ en ]. Als Str bijvoorbeeld een tekenreeksvariabele is, geeft de expressie Str[3] het derde teken in de tekenreeks terug.

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

De Basic-syntaxis ondersteunt:

  • Declaraties: SUB...END SUB, FUNCTION...END FUNCTION
  • Directives: BYREF, DIM
  • Voorwaarden: IF...THEN...ELSE...ELSEIF...END IF, SELECT CASE...END SELECT
  • Lussen: FOR...TO...STEP...NEXT, DO...WHILE...LOOP, DO...LOOP...WHILE, DO...UNTIL...LOOP, DO...LOOP...UNTIL
  • Operatoren: ^, *, /, AND, +, -, OR, <>, >=, <=, =, >, <, DIV, MOD, XOR, SHL, SHR
  • Foutafhandeling: TRY...EXCEPT, TRY...FINALLY
  • Overig: EXIT, array-constructors [1, 2, 3], objecttoegang ObjectName.Property

Er zijn twee vormen: IF...THEN...END IF en IF...THEN...ELSE...END IF. Als de expressie waar is, worden de THEN-instructies uitgevoerd. Als deze onwaar is, worden de ELSE-instructies uitgevoerd (indien aanwezig).

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

Als de instructie op een enkele regel staat, hebt u geen END IF nodig:

IF J <> 0 THEN Result = I/J

Als de selectorExpression overeenkomt met een van de caseexpr-expressies, worden de bijbehorende instructies uitgevoerd. Anders wordt de CASE ELSE-instructie uitgevoerd.

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

De FOR-instructie herhaalt de uitvoering van instructies totdat een teller een eindwaarde bereikt.

FOR counter = initialValue TO finalValue STEP stepValue
Statements
NEXT

Het STEP-gedeelte is optioneel; als het wordt weggelaten, is de stapwaarde 1.

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

Een WHILE-instructie herhaalt instructies zolang een besturingsvoorwaarde waar is. De voorwaarde wordt geëvalueerd voordat de instructies worden uitgevoerd.

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

Instructies worden uitgevoerd WHILE (zolang) een expressie waar is, of UNTIL (totdat) een expressie waar is. De voorwaarde kan voor of na de iteratie worden getest.

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

De declaraties lijken op standaard-Basic. Om een waarde uit een functie terug te geven, wijst u deze toe aan de impliciete variabele met dezelfde naam als de functie, of gebruikt u de Return-instructie. Parameters kunnen per referentie worden doorgegeven met de directive BYREF.

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

Subroutines (sub) en functies zijn standaard openbaar, maar kunnen als PRIVATE worden gedeclareerd.