Aller au contenu

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.

La structure d’un script est constituée de déclarations de fonctions et de sous-routines (sub).

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

Les instructions sur une même ligne peuvent être séparées par le caractère :.


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 ShowMessage
ShowMessage("Ok")
REM This is another comment
ShowMessage("More ok!")

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.


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 SUB

Vous pouvez également déclarer des variables globales en tant que PRIVATE ou PUBLIC.

PRIVATE A
PUBLIC B
B = 0
A = B + 1
ShowMessage(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 = 5

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 = 2
Application.Range("C4").Value = "This " + "is ok."

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 array
DIM PTIM = VarArrayCreate([0,3000,0,5], 12)
' Assign a value:
PTIM[1,2] = 1530

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] = 1530

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 objets ObjectName.Property

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/J
END IF
IF J = 0 THEN
Exit
ELSE
Result = I/J
END IF

Si l’instruction tient sur une seule ligne, vous n’avez pas besoin de END IF :

IF J <> 0 THEN Result = I/J

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 SELECT

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
Statements
NEXT

La partie STEP est facultative ; si elle est omise, la valeur du pas est de 1.

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

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 + 1
END WHILE

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 after
DO
K = I mod J
I = J
J = K
LOOP UNTIL J = 0
' Condition tested before
DO WHILE I < 0
...
LOOP

Dé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 IF
END FUNCTION
SUB SwapValues(BYREF A, B)
DIM TEMP
TEMP = A
A = B
B = TEMP
END SUB

Les sous-routines (sub) et les fonctions sont publiques par défaut mais peuvent être déclarées comme PRIVATE.