Referencia de sintaxis del VBA Compiler
Este documento ofrece una referencia de la sintaxis VBA admitida por el compilador VBA de XLS Padlock.
Estructura del script
Section titled “Estructura del script”La estructura del script se compone de declaraciones de funciones y subs.
SUB DoSomething CallSomethingEND SUB
FUNCTION MyFunction MyFunction = "Ok!"END FUNCTIONLas instrucciones en una sola línea se pueden separar con el carácter :.
Comentarios
Section titled “Comentarios”Se pueden insertar comentarios dentro de un script. Puede usar el carácter ' o REM. El comentario se extiende hasta el final de la línea.
' This is a comment before ShowMessageShowMessage("Ok")
REM This is another commentShowMessage("More ok!")Identificadores
Section titled “Identificadores”Los nombres de identificadores (variables, funciones, procedimientos, etc.) deben empezar por un carácter (a-z, A-Z) o un guion bajo _. Pueden ir seguidos de caracteres alfanuméricos o guiones bajos. Los nombres no pueden contener ningún otro carácter ni espacios.
Variables
Section titled “Variables”No es necesario declarar variables en un script, pero si lo desea, puede declarar una variable mediante la directiva DIM.
SUB Msg(Param1) DIM S S = "Hello world!" ShowMessage(S)END SUBTambién puede declarar variables globales como PRIVATE o PUBLIC.
PRIVATE APUBLIC BB = 0A = B + 1ShowMessage(A)Las variables declaradas con DIM son públicas de forma predeterminada. Las variables privadas no son accesibles desde otros scripts. Las variables también se pueden inicializar al declararlas:
DIM A = "Hello world"DIM B As Integer = 5Instrucciones de asignación
Section titled “Instrucciones de asignación”Las instrucciones de asignación utilizan el operador = para asignar un valor o el resultado de una expresión a una variable o a una propiedad de objeto.
MyVar = 2Application.Range("C4").Value = "This " + "is ok."Matrices
Section titled “Matrices”El compilador ofrece compatibilidad básica con constructores de matrices y matrices de tipo variante. Para construir una matriz, use los caracteres [ y ]. Puede construir una matriz de varios índices anidando constructores de matrices.
Las matrices del compilador tienen índice de 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"Matrices dinámicas:
' Create a dynamic arrayDIM PTIM = VarArrayCreate([0,3000,0,5], 12)' Assign a value:PTIM[1,2] = 1530Índices
Section titled “Índices”Las cadenas, las matrices y las propiedades de matriz se pueden indexar mediante los caracteres [ y ]. Por ejemplo, si Str es una variable de cadena, la expresión Str[3] devuelve el tercer carácter de la cadena.
MyChar = MyStr[2]MyStr[1] = "A"MyArray[1,2] = 1530Palabras clave y operadores
Section titled “Palabras clave y operadores”La sintaxis Basic admite:
- Declaraciones:
SUB...END SUB,FUNCTION...END FUNCTION - Directivas:
BYREF,DIM - Condicionales:
IF...THEN...ELSE...ELSEIF...END IF,SELECT CASE...END SELECT - Bucles:
FOR...TO...STEP...NEXT,DO...WHILE...LOOP,DO...LOOP...WHILE,DO...UNTIL...LOOP,DO...LOOP...UNTIL - Operadores:
^,*,/,AND,+,-,OR,<>,>=,<=,=,>,<,DIV,MOD,XOR,SHL,SHR - Gestión de errores:
TRY...EXCEPT,TRY...FINALLY - Otros:
EXIT, constructores de matrices[1, 2, 3], acceso a objetosObjectName.Property
Instrucciones If
Section titled “Instrucciones If”Existen dos formas: IF...THEN...END IF e IF...THEN...ELSE...END IF. Si la expresión es verdadera, se ejecutan las instrucciones de THEN. Si es falsa, se ejecutan las instrucciones de ELSE (si las hubiera).
IF J <> 0 THEN Result = I/JEND IF
IF J = 0 THEN ExitELSE Result = I/JEND IFSi la instrucción ocupa una sola línea, no necesita END IF:
IF J <> 0 THEN Result = I/JInstrucciones Select Case
Section titled “Instrucciones Select Case”Si la selectorExpression coincide con una de las expresiones caseexpr, se ejecutarán las instrucciones correspondientes. De lo contrario, se ejecutará la instrucción CASE ELSE.
SELECT CASE uppercase(Fruit) CASE "lime" ShowMessage("green") CASE "orange" ShowMessage("orange") CASE ELSE ShowMessage("black")END SELECTInstrucciones For
Section titled “Instrucciones For”La instrucción FOR repite la ejecución de instrucciones hasta que un contador alcanza un valor final.
FOR counter = initialValue TO finalValue STEP stepValue StatementsNEXTLa parte STEP es opcional; si se omite, el valor del paso es 1.
FOR c = 1 TO 10 STEP 2 a = a + cNEXTInstrucciones While
Section titled “Instrucciones While”Una instrucción WHILE repite las instrucciones mientras una condición de control sea verdadera. La condición se evalúa antes de ejecutar las instrucciones.
WHILE (Data[I] <> X) I = I + 1END WHILEInstrucciones Do...Loop
Section titled “Instrucciones Do...Loop”Las instrucciones se ejecutan WHILE (mientras) una expresión sea verdadera, o UNTIL (hasta que) una expresión sea verdadera. La condición se puede comprobar antes o después de la iteración.
' Condition tested afterDO K = I mod J I = J J = KLOOP UNTIL J = 0
' Condition tested beforeDO WHILE I < 0 ...LOOPDeclaraciones de funciones y subs
Section titled “Declaraciones de funciones y subs”Las declaraciones son similares a las del Basic estándar. Para devolver un valor desde una función, asígnelo a la variable implícita con el mismo nombre que la función, o use la instrucción Return. Los parámetros se pueden pasar por referencia mediante la directiva 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 SUBLos subs y las funciones son públicos de forma predeterminada, pero se pueden declarar como PRIVATE.