Instrução estática

Usado no 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 seus valores desde que o código esteja em execução.

Sintaxe

Varname estático [ ( [ subscripts ] ) ] [ As [ Novo ] tipo ], [ varname [ ( [ subscripts ] ) ] [ As [ Novo ] tipo ]] . . .

A sintaxe de instrução estática tem estas 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 ; até 60 várias dimensões podem ser declaradas. O argumentosubscripts usa 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 você usar Novo ao declarar a variável de objeto, uma nova instância do objeto será criada na primeira referência a ele, para que você não precise usar a instrução Set para atribuir a referência do objeto. A nova palavra-chave não pode ser usada para declarar variáveis de qualquer tipo de dados intrínseco e não pode ser usada para declarar instâncias de objetos dependentes.
type Opcional. Tipo de dados da variável; pode ser Byte, Boolean, Integer, Long, Conversor de Moedas, Single, Double, Decimal (não compatível atualmente), Date, String (para cadeias de caracteres de comprimento variável), comprimentoda cadeia de caracteres (para cadeias de caracteres de comprimento fixo), Objeto, Variant, um tipo definido pelo usuário ou um tipo de objeto. Use uma cláusula Astipo para todas as variáveis que estão sendo definidas.

Comentários

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

Use a instrução estática em procedimentos não estáticos para declarar explicitamente variáveis visíveis somente dentro do procedimento, mas cujo tempo de vida é o mesmo que o módulo no qual o procedimento é definido.

Use uma instrução estática dentro de um procedimento para declarar o tipo de dados de uma variável que mantém seu valor entre chamadas de procedimento. Por exemplo, a seguinte instrução declara uma matriz de tamanho fixo de inteiros:

Static EmployeeNumber(200) As Integer 

A instrução a seguir declara uma variável para uma nova instância de uma planilha:

Static X As New Worksheet 

Se a nova palavra-chave não for usada ao declarar uma variável de objeto, a variável que se refere ao objeto deverá ser atribuída a um objeto existente usando a instrução Set antes de poder ser usada. Até que seja atribuído um objeto, a variável de objeto declarada tem o valor especial Nothing, o que indica que ele não se refere a nenhuma instância específica de um objeto. Quando você usa a nova palavra-chave na declaração, uma instância do objeto é criada 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 usadas para efeitos diferentes. Se você declarar um procedimento usando a palavra-chave estática (como em ), o espaço de armazenamento para todas as variáveis locais dentro do procedimento será alocado uma vez e o valor das variáveis será preservado durante todo o tempo em Static Sub CountSales ()que o programa estiver em execução. Para procedimentos não estáticos, o espaço de armazenamento para variáveis é alocado sempre que o procedimento é chamado e liberado quando o procedimento é encerrado. A instrução estática é usada para declarar variáveis específicas em procedimentos não estáticos para preservar seu 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

Ao usar instruções estáticas em um procedimento, coloque-as no início do procedimento com outras instruções declarativas, como Dim.

Exemplo

Este exemplo usa 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.