Pular para o conteúdo

Referência de sintaxe do VBA Compiler

Este documento fornece uma referência da sintaxe VBA suportada pelo compilador VBA do XLS Padlock.

A estrutura do script é formada por declarações de funções e subs.

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

As instruções em uma única linha podem ser separadas pelo caractere :.


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

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.


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 SUB

Você também pode declarar variáveis globais como PRIVATE ou PUBLIC.

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

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

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

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

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

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

Se a instrução estiver em uma única linha, você não precisa de END IF:

IF J <> 0 THEN Result = I/J

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 SELECT

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

A parte STEP é opcional; se for omitida, o valor do passo é 1.

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

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

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

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

Os subs e as funções são públicos por padrão, mas podem ser declarados como PRIVATE.