Compartilhar via


Instrução estática

Utilizado ao nível do procedimento para declarar variáveis e alocar espaço de armazenamento. As variáveis declaradas com a instrução Estática mantêm os respetivos valores enquanto o código estiver em execução.

Sintaxe

Varname estático [ ( [ subscripts ] ) ] [ As [ New ] type ], [ varname [ ( [ subscripts ] ) ] [ As [ New ] type ]] . . .

A sintaxe da instrução Estática tem as seguintes partes:

Sair Descrição
nomedavariável Obrigatório. Nome da variável; segue as convenções de nomenclatura padrão para variáveis.
subscritos Opcional. Dimensões de uma variável de matriz ; Podem ser declaradas até 60 múltiplas dimensões. O argumentoinferior à linha utiliza a seguinte sintaxe:

[ inferiorTo ] superior [ , [ inferiorTo ] superior ] . . .

Quando não for explicitamente indicado em inferior, o limite inferior de uma matriz será controlado pela instrução Option Base. O limite inferior será zero se nenhuma instrução Option Base estiver presente.
New Opcional. Palavra-chave que permite a criação implícita de um objeto. Se utilizar Nova ao declarar a variável de objeto, é criada uma nova instância do objeto na primeira referência ao mesmo, para que não tenha de utilizar a instrução Set para atribuir a referência do objeto. O Novo palavra-chave não pode ser utilizado para declarar variáveis de qualquer tipo de dados intrínseco e não pode ser utilizado para declarar instâncias de objetos dependentes.
type Opcional. Tipo de dados da variável; podem ser Byte, Booleano, Número Inteiro, Longo, Conversor de Moedas, Único, Duplo, Decimal (não suportado atualmente), Data, Cadeia (para cadeias de comprimento variável),Comprimento da cadeia (para cadeias de comprimento fixo), Objeto, Variante, um tipo definido pelo utilizador ou um tipo de objeto. Use uma cláusula Astipo para todas as variáveis que estão sendo definidas.

Comentários

Após a execução do código do módulo , as variáveis declaradas com a instrução Estática mantêm o respetivo valor até que o módulo seja reposto ou reiniciado. Nos módulos de classe, as variáveis declaradas com a instrução Estática mantêm o valor em cada instância de classe até que essa instância seja destruída. Nos módulos de formulário, as variáveis estáticas mantêm o respetivo valor até que o formulário seja fechado.

Utilize a instrução Estática em procedimentos não estáticos para declarar explicitamente variáveis visíveis apenas dentro do procedimento, mas cuja duração é a mesma do módulo em que o procedimento é definido.

Utilize uma instrução Estática num procedimento para declarar o tipo de dados de uma variável que mantém o valor entre chamadas de procedimento. Por exemplo, a seguinte instrução declara uma matriz de tamanho fixo de números inteiros:

Static EmployeeNumber(200) As Integer 

A instrução seguinte declara uma variável para uma nova instância de uma folha de cálculo:

Static X As New Worksheet 

Se o novo palavra-chave não for utilizado ao declarar uma variável de objeto, a variável que se refere ao objeto tem de ser atribuída a um objeto existente utilizando a instrução Set antes de poder ser utilizada. Até ser atribuído um objeto, a variável de objeto declarado tem o valor especial Nada, o que indica que não se refere a nenhuma instância específica de um objeto. Quando utiliza o novo palavra-chave na declaração, é criada uma instância do objeto na primeira referência ao objeto.

Caso não especifique o tipo de dados ou o tipo de objeto, e se não houver uma instrução do typeDEF no módulo, a variável será Variante por padrão.

Observação

A instrução Estática e a palavra-chave Estática são semelhantes, mas são utilizadas para efeitos diferentes. Se declarar um procedimento através da palavra-chave Estática (como em Static Sub CountSales ()), o espaço de armazenamento de todas as variáveis locais no procedimento é alocado uma vez e o valor das variáveis é preservado durante todo o tempo em que o programa está em execução. Para procedimentos não estáticos, o espaço de armazenamento para variáveis é alocado sempre que o procedimento é chamado e libertado quando o procedimento é fechado. A instrução Estática é utilizada para declarar variáveis específicas dentro de procedimentos não estáticos para preservar o respetivo valor enquanto o programa estiver em execução.

Quando as variáveis são inicializadas, uma variável numérica é inicializada como 0, uma cadeia de caracteres de comprimento variável é inicializada para uma cadeia caracteres de comprimento zero ("") e uma cadeia de caracteres de comprimento fixo é preenchida com zeros. As variáveis Variant são inicializadas para Empty. Todo elemento de uma variável de tipo definido pelo usuário é inicializado como se fosse uma variável separada.

Observação

Quando utiliza instruções estáticas num procedimento, coloque-as no início do procedimento com outras instruções declarativas, como Dim.

Exemplo

Este exemplo utiliza a instrução Estática para manter o valor de uma variável enquanto o código do módulo estiver em execução.

' Function definition. 
Function KeepTotal(Number) 
    ' Only the variable Accumulate preserves its value between calls. 
    Static Accumulate 
    Accumulate = Accumulate + Number 
    KeepTotal = Accumulate 
End Function 
 
' Static function definition. 
Static Function MyFunction(Arg1, Arg2, Arg3) 
    ' All local variables preserve value between function calls. 
    Accumulate = Arg1 + Arg2 + Arg3 
    Half = Accumulate / 2 
    MyFunction = Half 
End Function

Confira também

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.