Referência de sintaxe do VBA Compiler
Este documento fornece uma referência da sintaxe VBA suportada pelo compilador VBA do XLS Padlock.
Estrutura do script
Section titled “Estrutura do script”A estrutura do script é formada por declarações de funções e subs.
SUB DoSomething CallSomethingEND SUB
FUNCTION MyFunction MyFunction = "Ok!"END FUNCTIONAs instruções em uma única linha podem ser separadas pelo caractere :.
Comentários
Section titled “Comentários”É possível inserir comentários dentro de um script. Você pode usar o caractere ' ou REM. O comentário se estende até o final da linha.
' This is a comment before ShowMessageShowMessage("Ok")
REM This is another commentShowMessage("More ok!")Identificadores
Section titled “Identificadores”Os nomes de identificadores (variáveis, funções, procedimentos, etc.) devem começar por um caractere (a-z, A-Z) ou um sublinhado _. Eles podem ser seguidos por caracteres alfanuméricos ou sublinhados. Os nomes não podem conter nenhum outro caractere nem espaços.
Variáveis
Section titled “Variáveis”Não é necessário declarar variáveis em um script, mas, se você quiser, pode declarar uma variável por meio da diretiva DIM.
SUB Msg(Param1) DIM S S = "Hello world!" ShowMessage(S)END SUBVocê também pode declarar variáveis globais como PRIVATE ou PUBLIC.
PRIVATE APUBLIC BB = 0A = B + 1ShowMessage(A)As variáveis declaradas com DIM são públicas por padrão. As variáveis privadas não são acessíveis a partir de outros scripts. As variáveis também podem ser inicializadas no momento da declaração:
DIM A = "Hello world"DIM B As Integer = 5Instruções de atribuição
Section titled “Instruções de atribuição”As instruções de atribuição usam o operador = para atribuir um valor ou o resultado de uma expressão a uma variável ou a uma propriedade de objeto.
MyVar = 2Application.Range("C4").Value = "This " + "is ok."Matrizes
Section titled “Matrizes”O compilador oferece suporte básico a construtores de matrizes e a matrizes do tipo variante. Para construir uma matriz, use os caracteres [ e ]. Você pode construir uma matriz de vários índices aninhando construtores de matrizes.
As matrizes no compilador têm í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"Matrizes dinâmicas:
' Create a dynamic arrayDIM PTIM = VarArrayCreate([0,3000,0,5], 12)' Assign a value:PTIM[1,2] = 1530Índices
Section titled “Índices”As cadeias de caracteres, as matrizes e as propriedades de matriz podem ser indexadas por meio dos caracteres [ e ]. Por exemplo, se Str for uma variável de cadeia, a expressão Str[3] retorna o terceiro caractere da cadeia.
MyChar = MyStr[2]MyStr[1] = "A"MyArray[1,2] = 1530Palavras-chave e operadores
Section titled “Palavras-chave e operadores”A sintaxe Basic suporta:
- Declarações:
SUB...END SUB,FUNCTION...END FUNCTION - Diretivas:
BYREF,DIM - Condicionais:
IF...THEN...ELSE...ELSEIF...END IF,SELECT CASE...END SELECT - Loops:
FOR...TO...STEP...NEXT,DO...WHILE...LOOP,DO...LOOP...WHILE,DO...UNTIL...LOOP,DO...LOOP...UNTIL - Operadores:
^,*,/,AND,+,-,OR,<>,>=,<=,=,>,<,DIV,MOD,XOR,SHL,SHR - Tratamento de erros:
TRY...EXCEPT,TRY...FINALLY - Outros:
EXIT, construtores de matrizes[1, 2, 3], acesso a objetosObjectName.Property
Instruções If
Section titled “Instruções If”Existem duas formas: IF...THEN...END IF e IF...THEN...ELSE...END IF. Se a expressão for verdadeira, as instruções do THEN são executadas. Se for falsa, as instruções do ELSE são executadas (caso existam).
IF J <> 0 THEN Result = I/JEND IF
IF J = 0 THEN ExitELSE Result = I/JEND IFSe a instrução estiver em uma única linha, você não precisa de END IF:
IF J <> 0 THEN Result = I/JInstruções Select Case
Section titled “Instruções Select Case”Se a selectorExpression corresponder a uma das expressões caseexpr, as instruções respectivas serão executadas. Caso contrário, a instrução CASE ELSE será executada.
SELECT CASE uppercase(Fruit) CASE "lime" ShowMessage("green") CASE "orange" ShowMessage("orange") CASE ELSE ShowMessage("black")END SELECTInstruções For
Section titled “Instruções For”A instrução FOR repete a execução de instruções até que um contador atinja um valor final.
FOR counter = initialValue TO finalValue STEP stepValue StatementsNEXTA parte STEP é opcional; se for omitida, o valor do passo é 1.
FOR c = 1 TO 10 STEP 2 a = a + cNEXTInstruções While
Section titled “Instruções While”Uma instrução WHILE repete as instruções enquanto uma condição de controle for verdadeira. A condição é avaliada antes da execução das instruções.
WHILE (Data[I] <> X) I = I + 1END WHILEInstruções Do...Loop
Section titled “Instruções Do...Loop”As instruções são executadas WHILE (enquanto) uma expressão for verdadeira, ou UNTIL (até que) uma expressão seja verdadeira. A condição pode ser testada antes ou depois da iteração.
' Condition tested afterDO K = I mod J I = J J = KLOOP UNTIL J = 0
' Condition tested beforeDO WHILE I < 0 ...LOOPDeclarações de funções e subs
Section titled “Declarações de funções e subs”As declarações são semelhantes às do Basic padrão. Para retornar um valor de uma função, atribua-o à variável implícita com o mesmo nome da função, ou use a instrução Return. Os parâmetros podem ser passados por referência por meio da diretiva 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 SUBOs subs e as funções são públicos por padrão, mas podem ser declarados como PRIVATE.