Riferimento della sintassi del VBA Compiler
Questo documento fornisce un riferimento per la sintassi VBA supportata dal VBA compiler di XLS Padlock.
Struttura dello script
Section titled “Struttura dello script”La struttura di uno script è costituita da dichiarazioni di funzioni e di routine (sub).
SUB DoSomething CallSomethingEND SUB
FUNCTION MyFunction MyFunction = "Ok!"END FUNCTIONLe istruzioni su una stessa riga possono essere separate dal carattere :.
Commenti
Section titled “Commenti”È possibile inserire commenti all’interno di uno script. Si può usare il carattere ' oppure REM. Il commento si estende fino alla fine della riga.
' This is a comment before ShowMessageShowMessage("Ok")
REM This is another commentShowMessage("More ok!")Identificatori
Section titled “Identificatori”I nomi degli identificatori (variabili, funzioni, procedure, ecc.) devono iniziare con un carattere (a-z, A-Z) o con un trattino basso _. Possono essere seguiti da caratteri alfanumerici o da trattini bassi. I nomi non possono contenere altri caratteri né spazi.
Variabili
Section titled “Variabili”Non è necessario dichiarare le variabili in uno script, ma se lo si desidera è possibile dichiarare una variabile mediante la direttiva DIM.
SUB Msg(Param1) DIM S S = "Hello world!" ShowMessage(S)END SUBÈ inoltre possibile dichiarare variabili globali come PRIVATE o PUBLIC.
PRIVATE APUBLIC BB = 0A = B + 1ShowMessage(A)Le variabili dichiarate con DIM sono pubbliche per impostazione predefinita. Le variabili private non sono accessibili da altri script. Le variabili possono anche essere inizializzate al momento della dichiarazione:
DIM A = "Hello world"DIM B As Integer = 5Istruzioni di assegnazione
Section titled “Istruzioni di assegnazione”Le istruzioni di assegnazione utilizzano l’operatore = per assegnare un valore o il risultato di un’espressione a una variabile o a una proprietà di un oggetto.
MyVar = 2Application.Range("C4").Value = "This " + "is ok."Il compilatore offre un supporto di base per i costruttori di array e per gli array variant. Per costruire un array, utilizzare i caratteri [ e ]. È possibile costruire un array a più indici annidando i costruttori di array.
Nel compilatore, gli array hanno indice a base 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"Array dinamici:
' Create a dynamic arrayDIM PTIM = VarArrayCreate([0,3000,0,5], 12)' Assign a value:PTIM[1,2] = 1530Indici
Section titled “Indici”Le stringhe, gli array e le proprietà di tipo array possono essere indicizzati mediante i caratteri [ e ]. Per esempio, se Str è una variabile di tipo stringa, l’espressione Str[3] restituisce il terzo carattere della stringa.
MyChar = MyStr[2]MyStr[1] = "A"MyArray[1,2] = 1530Parole chiave e operatori
Section titled “Parole chiave e operatori”La sintassi Basic supporta:
- Dichiarazioni:
SUB...END SUB,FUNCTION...END FUNCTION - Direttive:
BYREF,DIM - Condizionali:
IF...THEN...ELSE...ELSEIF...END IF,SELECT CASE...END SELECT - Cicli:
FOR...TO...STEP...NEXT,DO...WHILE...LOOP,DO...LOOP...WHILE,DO...UNTIL...LOOP,DO...LOOP...UNTIL - Operatori:
^,*,/,AND,+,-,OR,<>,>=,<=,=,>,<,DIV,MOD,XOR,SHL,SHR - Gestione degli errori:
TRY...EXCEPT,TRY...FINALLY - Altro:
EXIT, costruttori di array[1, 2, 3], accesso agli oggettiObjectName.Property
Istruzioni If
Section titled “Istruzioni If”Esistono due forme: IF...THEN...END IF e IF...THEN...ELSE...END IF. Se l’espressione è vera, vengono eseguite le istruzioni THEN. Se è falsa, vengono eseguite le istruzioni ELSE (se presenti).
IF J <> 0 THEN Result = I/JEND IF
IF J = 0 THEN ExitELSE Result = I/JEND IFSe l’istruzione si trova su una singola riga, non è necessario END IF:
IF J <> 0 THEN Result = I/JIstruzioni Select Case
Section titled “Istruzioni Select Case”Se selectorExpression corrisponde a una delle espressioni caseexpr, vengono eseguite le rispettive istruzioni. In caso contrario, viene eseguita l’istruzione CASE ELSE.
SELECT CASE uppercase(Fruit) CASE "lime" ShowMessage("green") CASE "orange" ShowMessage("orange") CASE ELSE ShowMessage("black")END SELECTIstruzioni For
Section titled “Istruzioni For”L’istruzione FOR ripete l’esecuzione di istruzioni finché un contatore non raggiunge un valore finale.
FOR counter = initialValue TO finalValue STEP stepValue StatementsNEXTLa parte STEP è facoltativa; se omessa, il valore del passo è 1.
FOR c = 1 TO 10 STEP 2 a = a + cNEXTIstruzioni While
Section titled “Istruzioni While”Un’istruzione WHILE ripete delle istruzioni finché una condizione di controllo è vera. La condizione viene valutata prima dell’esecuzione delle istruzioni.
WHILE (Data[I] <> X) I = I + 1END WHILEIstruzioni Do...Loop
Section titled “Istruzioni Do...Loop”Le istruzioni vengono eseguite WHILE (finché) un’espressione è vera, oppure UNTIL (fino a quando) un’espressione diventa vera. La condizione può essere verificata prima o dopo l’iterazione.
' Condition tested afterDO K = I mod J I = J J = KLOOP UNTIL J = 0
' Condition tested beforeDO WHILE I < 0 ...LOOPDichiarazioni di funzioni e di routine
Section titled “Dichiarazioni di funzioni e di routine”Le dichiarazioni sono simili al Basic standard. Per restituire un valore da una funzione, assegnarlo alla variabile implicita avente lo stesso nome della funzione, oppure utilizzare l’istruzione Return. I parametri possono essere passati per riferimento mediante la direttiva 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 SUBLe routine (sub) e le funzioni sono pubbliche per impostazione predefinita, ma possono essere dichiarate come PRIVATE.