VBA Compiler syntaxreferentie
Dit document biedt een referentie voor de VBA-syntaxis die door de VBA Compiler van XLS Padlock wordt ondersteund.
Scriptstructuur
Section titled “Scriptstructuur”De scriptstructuur bestaat uit declaraties van functies en subroutines (sub).
SUB DoSomething CallSomethingEND SUB
FUNCTION MyFunction MyFunction = "Ok!"END FUNCTIONInstructies op een enkele regel kunnen worden gescheiden door het teken :.
Opmerkingen
Section titled “Opmerkingen”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 ShowMessageShowMessage("Ok")
REM This is another commentShowMessage("More ok!")Identifiers
Section titled “Identifiers”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.
Variabelen
Section titled “Variabelen”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 SUBU kunt globale variabelen ook als PRIVATE of PUBLIC declareren.
PRIVATE APUBLIC BB = 0A = B + 1ShowMessage(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 = 5Toewijzingsinstructies
Section titled “Toewijzingsinstructies”Toewijzingsinstructies gebruiken de operator = om een waarde of het resultaat van een expressie toe te wijzen aan een variabele of een objecteigenschap.
MyVar = 2Application.Range("C4").Value = "This " + "is ok."Arrays
Section titled “Arrays”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 arrayDIM PTIM = VarArrayCreate([0,3000,0,5], 12)' Assign a value:PTIM[1,2] = 1530Indexen
Section titled “Indexen”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] = 1530Sleutelwoorden en operatoren
Section titled “Sleutelwoorden en operatoren”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], objecttoegangObjectName.Property
If-instructies
Section titled “If-instructies”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/JEND IF
IF J = 0 THEN ExitELSE Result = I/JEND IFAls de instructie op een enkele regel staat, hebt u geen END IF nodig:
IF J <> 0 THEN Result = I/JSelect Case-instructies
Section titled “Select Case-instructies”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 SELECTFor-instructies
Section titled “For-instructies”De FOR-instructie herhaalt de uitvoering van instructies totdat een teller een eindwaarde bereikt.
FOR counter = initialValue TO finalValue STEP stepValue StatementsNEXTHet STEP-gedeelte is optioneel; als het wordt weggelaten, is de stapwaarde 1.
FOR c = 1 TO 10 STEP 2 a = a + cNEXTWhile-instructies
Section titled “While-instructies”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 + 1END WHILEDo...Loop-instructies
Section titled “Do...Loop-instructies”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 afterDO K = I mod J I = J J = KLOOP UNTIL J = 0
' Condition tested beforeDO WHILE I < 0 ...LOOPDeclaraties van functies en subroutines
Section titled “Declaraties van functies en subroutines”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 IFEND FUNCTION
SUB SwapValues(BYREF A, B) DIM TEMP TEMP = A A = B B = TEMPEND SUBSubroutines (sub) en functies zijn standaard openbaar, maar kunnen als PRIVATE worden gedeclareerd.