Tipo de datos de variante de VBA (variable de atenuación)

Tipo de variable variante

Una variable variable puede contener datos en cualquier momento (cadenas, números enteros, decimales, objetos, etc.). Si no declara un tipo de variable, su variable se considerará variante.

Para declarar una variable Variant, use la Declaración Dim (abreviatura de Dimensión):

1 Dim varName como variante
1 Dim rng como variante

Luego, para asignar un valor a una variable, simplemente use el signo igual:

1 varName = "John"
1 rng = Hojas (1) .Rango ("A1")

Poner esto en un procedimiento se ve así:

12345678910 Sub strExample ()'declarar las variantesDim strName como varianteAtenuar como variante'rellenar las variablesstrName = "Fred Smith"Establecer rng = Hojas (1) .Rango ("A1")'llenar la hojarng.Value = strNameEnd Sub

Si ejecuta el código anterior, la celda A1 de la Hoja 1 se completará con "Fred Smith"

Por los nombres declarados anteriormente, podríamos concluir que el varName contendría texto, y el objSheet contendría un objeto de hoja de trabajo. Pero en realidad, cualquier tipo de datos puede dirigirse a la variable.

Puede completar las variables declaradas anteriormente de la siguiente manera y no se produciría ningún error.

1 varName = 6
1 objSheet - "Fred"

Es inusual utilizar variables variantes y no se considera una buena práctica. En ocasiones, sin embargo, las variables Variantes son útiles.

Declarar variable variable a nivel de módulo o global

En el ejemplo anterior, declaró la variable Variant dentro de un procedimiento. Las variables declaradas con un procedimiento solo se pueden usar dentro de ese procedimiento.

En su lugar, puede declarar variables Variant a nivel de módulo o global.

Nivel de módulo

Nivel de módulo Las variables se declaran en la parte superior de los módulos de código con la Oscuro declaración.

Estas variables se pueden usar con cualquier procedimiento en ese módulo de código.

Nivel global

Nivel global las variables también se declaran en la parte superior de los módulos de código. Sin embargo, en lugar de utilizar el Oscuro declaración, usa el Público declaración para indicar que la variable de cadena está disponible para ser utilizada en todo su proyecto VBA.

1 StrName público como variante

Si declarara la variable variante a nivel de módulo y la usara en un módulo diferente, se produciría un error.

Si hubiera utilizado la palabra clave Public para declarar la variable variante, no se produciría el error y el procedimiento se ejecutaría perfectamente.

Usando una variante para llenar Excel

Considere el siguiente procedimiento:

12345678910111213141516171819 Variable de subprueba'declara una cadena para contener el nombre del productoDim strProduct como cadena'declara un número entero para contener la cantidad de productoDim iQty como entero'declarar dobles para mantener el precio del producto y el precio totalDim dblPrice as DoubleDim dblTotal como Double'rellenar las variablesstrProduct = "Harina para todo uso"iQty = 3dblPrice = "$ 5,00"dblTotal = "$ 15,00"'rellenar la hoja de ExcelRango ("A1") = strProductRango ("A2") = iQtyRango ("A3") = dblPriceRango ("A4") = dblTotalEnd Sub

Cuando ejecutamos este código, se produce el siguiente error.

Haga clic en depurar

No puede poner un signo de dólar en la variable ya que la variable se declara como Dobley, por lo tanto, no puede almacenar valores de cadena.

Declarar dblPrice y dblTotal como Variantes, lo que significa que no está restringido a un tipo de datos.

1 Dim dblPrice como variante
1 Dim dblTotal como variante

Vuelva a ejecutar el código y los datos aparecerán en la hoja de Excel como deberían.

Tenga en cuenta que Excel convierte automáticamente los datos ingresados ​​en A4 y A5 en números.

Declaración de una matriz dinámica

Las variables variantes también son útiles cuando declara una matriz dinámica, ya que permiten que el tamaño de la matriz cambie durante el tiempo de ejecución.

Con unMatriz variante, no es necesario definir el tamaño de la matriz. El tamaño se ajustará automáticamente.

123456789 Sub VariantArray ()Dim arrList () como variante'Definir valoresarrList = Matriz (1, 2, 3, 4)'Cambiar valoresarrList = Matriz (1,2,3,4,5,6)'Posición de salida 4MsgBox arrVar (4)End Sub

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave