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 Static mantêm seus valores enquanto o código estiver em execução.

Sintaxe

staticvarname [ ( [ subscritos ] ) ] [ As [ Novo ] type ], [ varname [ ( [ subscritos ] ) ] [ As [ Novo ] tipo ]] . . .

A sintaxe da instrução Static 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 dimensões múltiplas podem ser declaradas. O argumentosubscritos 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 New ao declarar a variável de objeto, uma nova instância do objeto será criada na primeira referência a ela, para que você não precise usar a instrução Set para atribuir a referência de objeto. A palavra-chave New não pode ser usada para declarar variáveis de nenhum tipo de dados intrínsecos e não pode ser usada para declarar instâncias de objetos dependentes.
type Opcional. Tipo de dados da variável; pode ser Byte, Booliano, Inteiro, Longo, Conversor de Moedas, Simples, Duplo, Decimal (não há suporte no momento), Data, Cadeia de Caracteres (para cadeias de caracteres de comprimento variável), Comprimento da Cadeia de Caracteres (para cadeias de caracteres de comprimento fixo), Objeto, Variante, 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 Static manterão seu valor até que o módulo seja redefinido ou reiniciado. Em módulos de classe, as variáveis declaradas com a instrução Static retêm seu 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 seu valor até que o formulário seja fechado.

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

Use uma instrução Static em um procedimento para declarar o tipo de dados de uma variável que retém seu valor entre chamadas de procedimento. Por exemplo, a instrução a seguir declara uma matriz de número inteiro de tamanho fixo:

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 que ela possa ser usada. Até que um objeto seja atribuído, a variável de objeto declarada tem o valor especial Nothing, que indica que ela 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 Static e a palavra-chave Static são semelhantes, mas usadas para efeitos diferentes. Se você declarar um procedimento usando a palavra-chave Static (como em Static Sub CountSales ()), 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 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 Static é usada para declarar variáveis específicas dentro de 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 Static para reter 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.