Instrucción Static

Se usa en el nivel de procedimiento para declarar variables y asignar espacio de almacenamiento. Las variables declaradas con la instrucción Static conservan los valores siempre que el código se esté ejecutando.

Sintaxis

Staticvarname [ ( [ subíndices ] ) ] [ As [ New ] type ], [ varname [ ( [ subscripts ] ) ] [ As [ New ] type ]] . . .

La sintaxis de la instrucción Static tiene estas partes:

Parte Descripción
varname Obligatorio. Nombre de la variable; sigue las convenciones de nomenclatura de variable estándar.
subscripts Opcional. Dimensiones de una variable de matriz; pueden declararse hasta 60 dimensiones múltiples. El argumentosubíndices usa la sintaxis siguiente:

[ lowerTo ] upper [ , [ lowerTo ] upper ] . . .

Cuando no se encuentra de manera explícita en lower, el límite inferior de una matriz se controla mediante la instrucción Option Base. El límite inferior es cero si no existe una instrucción Option Base.
Nuevo Opcional. Palabra clave que habilita la creación implícita de un objeto. Si usa New cuando se declara la variable de objeto, se crea una nueva instancia del objeto en la primera referencia a él, por lo que no tiene que usar la instrucción Set para asignar la referencia del objeto. La palabra clave New no puede usarse para declarar las variables de cualquier tipo de datos intrínseco y no puede usarse para declarar instancias de objetos dependientes.
type Opcional. Tipo de datos de la variable; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no compatible actualmente), Date, String (para cadenas de longitud variable), Longitud de cadena (para cadenas de longitud fija), Object, Variant, un tipo definido por el usuario o un tipo de objeto. Utilizar una cláusula Astype independiente para cada variable que se define.

Comentarios

Una vez que se ejecuta el código del módulo , las variables declaradas con la instrucción Static conservan su valor hasta que se restablece o se reinicia el módulo. En los módulos de clase, las variables declaradas con la instrucción Static conservan su valor en cada instancia de clase hasta que se destruye la instancia. En los módulos de formularios, las variables estáticas conservan su valor hasta que se cierra el formulario.

Use la instrucción Static en un procedimiento que no sea estático para declarar explícitamente variables que están visibles solo en el procedimiento, pero cuya vigencia es la misma que la del módulo en el que se ha definido el procedimiento.

Use una instrucción Static en un procedimiento para declarar el tipo de datos de una variable que conserva el valor entre las llamadas a procedimientos. Por ejemplo, la siguiente instrucción declara una matriz de tamaño fijo de enteros:

Static EmployeeNumber(200) As Integer 

La siguiente instrucción declara una variable para una nueva instancia de una hoja de cálculo:

Static X As New Worksheet 

Si no se usa la palabra clave New al declarar una variable de objeto, a la variable que hace referencia al objeto se le debe asignar un objeto existente mediante la instrucción Set antes de que se pueda usar. Hasta que se le asigna un objeto, la variable de objeto declarada tiene el valor especial Nothing, que indica que no hace referencia a ninguna instancia determinada de un objeto. Cuando usa la palabra clave New en la declaración, se crea una instancia del objeto en la primera referencia al objeto.

Si no especifica un tipo de datos o tipo de objeto, y no hay una instrucción Deftipo en el módulo, la variable es Variant de forma predeterminada.

Nota:

[!NOTA] La instrucción Static y la palabra clave Static son parecidas pero se usan para conseguir diferentes resultados. Si declara un procedimiento mediante la palabra clave Static (como en Static Sub CountSales ()), el espacio de almacenamiento de todas las variables locales del procedimiento se asigna una vez y el valor de las variables se conserva durante todo el tiempo que se ejecuta el programa. En los procedimientos no estáticos, el espacio de almacenamiento de las variables se asigna cada vez que se llama al procedimiento y se libera cuando se sale del procedimiento. La instrucción Static se usa para declarar variables específicas en procedimientos no estáticos con el fin de conservar el valor siempre que el programa se esté ejecutando.

Cuando las variables se inicializan, se inicializa una variable numérica en 0, una cadena de longitud variable se inicializa en una cadena de longitud cero ("") y una cadena de longitud fija se completa con ceros. Las variables Variant se inicializan enEmpty. Cada elemento de una variable de tipo definido por el usuario se inicializa como si fuese una variable independiente.

Nota:

Cuando use instrucciones Static en un procedimiento, póngalas al principio del procedimiento con otras instrucciones declarativas como Dim.

Ejemplo:

En este ejemplo se usa la instrucción Static para conservar el valor de una variable mientras se ejecute el código del módulo.

' 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

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.