Référence de la syntaxe du VBA Compiler
Ce document fournit une référence de la syntaxe VBA prise en charge par le VBA compiler de XLS Padlock.
Structure du script
Section titled “Structure du script”La structure d’un script est constituée de déclarations de fonctions et de sous-routines (sub).
SUB DoSomething CallSomethingEND SUB
FUNCTION MyFunction MyFunction = "Ok!"END FUNCTIONLes instructions sur une même ligne peuvent être séparées par le caractère :.
Commentaires
Section titled “Commentaires”Des commentaires peuvent être insérés dans un script. Vous pouvez utiliser le caractère ' ou REM. Le commentaire s’étend jusqu’à la fin de la ligne.
' This is a comment before ShowMessageShowMessage("Ok")
REM This is another commentShowMessage("More ok!")Identifiants
Section titled “Identifiants”Les noms d’identifiants (variables, fonctions, procédures, etc.) doivent commencer par un caractère (a-z, A-Z) ou un trait de soulignement _. Ils peuvent être suivis de caractères alphanumériques ou de traits de soulignement. Les noms ne peuvent contenir aucun autre caractère ni espace.
Variables
Section titled “Variables”Il n’est pas nécessaire de déclarer les variables dans un script, mais si vous le souhaitez, vous pouvez déclarer une variable à l’aide de la directive DIM.
SUB Msg(Param1) DIM S S = "Hello world!" ShowMessage(S)END SUBVous pouvez également déclarer des variables globales en tant que PRIVATE ou PUBLIC.
PRIVATE APUBLIC BB = 0A = B + 1ShowMessage(A)Les variables déclarées avec DIM sont publiques par défaut. Les variables privées ne sont pas accessibles depuis d’autres scripts. Les variables peuvent également être initialisées lors de leur déclaration :
DIM A = "Hello world"DIM B As Integer = 5Instructions d’affectation
Section titled “Instructions d’affectation”Les instructions d’affectation utilisent l’opérateur = pour affecter une valeur ou le résultat d’une expression à une variable ou à une propriété d’objet.
MyVar = 2Application.Range("C4").Value = "This " + "is ok."Tableaux
Section titled “Tableaux”Le compilateur offre une prise en charge de base des constructeurs de tableaux et des tableaux variants. Pour construire un tableau, utilisez les caractères [ et ]. Vous pouvez construire un tableau à plusieurs indices en imbriquant des constructeurs de tableaux.
Dans le compilateur, les tableaux sont indexés à partir de 0.
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"Tableaux dynamiques :
' Create a dynamic arrayDIM PTIM = VarArrayCreate([0,3000,0,5], 12)' Assign a value:PTIM[1,2] = 1530Indices
Section titled “Indices”Les chaînes de caractères, les tableaux et les propriétés de type tableau peuvent être indexés à l’aide des caractères [ et ]. Par exemple, si Str est une variable de type chaîne, l’expression Str[3] renvoie le troisième caractère de la chaîne.
MyChar = MyStr[2]MyStr[1] = "A"MyArray[1,2] = 1530Mots-clés et opérateurs
Section titled “Mots-clés et opérateurs”La syntaxe Basic prend en charge :
- Déclarations :
SUB...END SUB,FUNCTION...END FUNCTION - Directives :
BYREF,DIM - Conditionnelles :
IF...THEN...ELSE...ELSEIF...END IF,SELECT CASE...END SELECT - Boucles :
FOR...TO...STEP...NEXT,DO...WHILE...LOOP,DO...LOOP...WHILE,DO...UNTIL...LOOP,DO...LOOP...UNTIL - Opérateurs :
^,*,/,AND,+,-,OR,<>,>=,<=,=,>,<,DIV,MOD,XOR,SHL,SHR - Gestion des erreurs :
TRY...EXCEPT,TRY...FINALLY - Autres :
EXIT, constructeurs de tableaux[1, 2, 3], accès aux objetsObjectName.Property
Instructions If
Section titled “Instructions If”Il existe deux formes : IF...THEN...END IF et IF...THEN...ELSE...END IF. Si l’expression est vraie, les instructions THEN sont exécutées. Si elle est fausse, les instructions ELSE sont exécutées (si elles sont présentes).
IF J <> 0 THEN Result = I/JEND IF
IF J = 0 THEN ExitELSE Result = I/JEND IFSi l’instruction tient sur une seule ligne, vous n’avez pas besoin de END IF :
IF J <> 0 THEN Result = I/JInstructions Select Case
Section titled “Instructions Select Case”Si selectorExpression correspond à l’une des expressions caseexpr, les instructions correspondantes seront exécutées. Sinon, l’instruction CASE ELSE sera exécutée.
SELECT CASE uppercase(Fruit) CASE "lime" ShowMessage("green") CASE "orange" ShowMessage("orange") CASE ELSE ShowMessage("black")END SELECTInstructions For
Section titled “Instructions For”L’instruction FOR répète l’exécution d’instructions jusqu’à ce qu’un compteur atteigne une valeur finale.
FOR counter = initialValue TO finalValue STEP stepValue StatementsNEXTLa partie STEP est facultative ; si elle est omise, la valeur du pas est de 1.
FOR c = 1 TO 10 STEP 2 a = a + cNEXTInstructions While
Section titled “Instructions While”Une instruction WHILE répète des instructions tant qu’une condition de contrôle est vraie. La condition est évaluée avant l’exécution des instructions.
WHILE (Data[I] <> X) I = I + 1END WHILEInstructions Do...Loop
Section titled “Instructions Do...Loop”Les instructions sont exécutées WHILE (tant qu’)une expression est vraie, ou UNTIL (jusqu’à ce qu’)une expression soit vraie. La condition peut être testée avant ou après l’itération.
' Condition tested afterDO K = I mod J I = J J = KLOOP UNTIL J = 0
' Condition tested beforeDO WHILE I < 0 ...LOOPDéclarations de fonctions et de sous-routines
Section titled “Déclarations de fonctions et de sous-routines”Les déclarations sont similaires au Basic standard. Pour renvoyer une valeur depuis une fonction, affectez-la à la variable implicite portant le même nom que la fonction, ou utilisez l’instruction Return. Les paramètres peuvent être passés par référence à l’aide de la 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 SUBLes sous-routines (sub) et les fonctions sont publiques par défaut mais peuvent être déclarées comme PRIVATE.