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 |