Tipo de variable de cadena
El tipo de datos String es uno de los tipos de datos más comunes en VBA. Almacena "cadenas" de texto.
Para declarar una variable String variable, usa la Declaración Dim (abreviatura de Dimensión):
1 | Dim strName como cadena |
Para asignar un valor a una variable, usa el signo igual:
1 | strName = "Fred Smith" |
Poner esto en un procedimiento se ve así:
12345678 | Sub strExample ()'declarar la cadenaDim strName como cadena'poblar la cadenastrName = "Fred Smith"'mostrar el cuadro de mensajeMsgBox strnameEnd Sub |
Si ejecuta el código anterior, se mostrará el siguiente cuadro de mensaje.
Variable de cadena fija
En realidad, hay 2 tipos de variables de cadena: fijas y variables.
La variable de cadena "variable" (que se muestra en el ejemplo anterior) permite que su cadena tenga cualquier longitud. Esto es lo más común.
La variable de cadena "fija" define el tamaño de la cadena. Una cadena fija puede contener hasta 65,400 caracteres.
1 | Dim strName como cadena * 20 |
Cuando define una variable fija, el número de caracteres de la variable se bloquea en su lugar, incluso si usa menos caracteres.
Observe los espacios en el gráfico siguiente: la variable tiene marcadores de posición para el resto de los caracteres de la cadena, ya que "Fred Smith" tiene menos de 20 caracteres.
Sin embargo, si ha declarado una cadena sin especificar la longitud, la cadena solo contendrá tantos caracteres como se le pasen.
Declarar variable de cadena a nivel de módulo o global
En el ejemplo anterior, declaró la variable String dentro de un procedimiento. Las variables declaradas con un procedimiento solo se pueden usar dentro de ese procedimiento.
En su lugar, puede declarar variables de cadena 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 cadena |
Si declara la variable de cadena en un nivel de módulo y se usa en un módulo diferente, se produciría un error.
Sin embargo, si usa la palabra clave Public para declarar la variable de cadena, el error no ocurriría y el procedimiento se ejecutaría perfectamente.
Convertir valores almacenados como cadena
Puede haber un momento en el que tenga valores en Excel que se almacenen como texto; por ejemplo, puede haber importado un archivo CSV que puede haber traído texto en lugar de números.
Tenga en cuenta que el valor en A1 está alineado a la izquierda, lo que indica un valor de texto.
Puedes usar un Función VBA se puede utilizar para convertir estos números en texto
12345678 | Sub ConvertValue ()'poblar la cadenastrQty = Rango ("A1")'poblar el doble con la cuerdadblQty = strQty'rellenar el rango con el númeroRango ("A1") = dblQtyEnd Sub |
Una vez que ejecute el código, el número se moverá hacia la derecha, lo que indica que ahora está almacenado como un número.
Esto es particularmente útil cuando recorre una gran variedad de celdas.
123456789101112131415 | Sub ConvertValue ()Dim strQty como cadena, dblQty como dobleDim rw como entero, i como entero'cuenta las filas para convertirrw = Rango ("A1", Rango ("A1"). Fin (xlDown)). Rows.Countrecorre las celdas y convierte cada una en un númeroPara i = 0 A rw - 1'poblar la cadenastrQty = Rango ("A1"). Desplazamiento (i, 0)'poblar el doble con la cuerdadblQty = strQty'rellenar el rango con el númeroRango ("A1"). Desplazamiento (i, 0) = dblQtySiguiente yoEnd Sub |
El resultado será que todas las celdas se convertirán en números.
¿Cansado de buscar ejemplos de código VBA? ¡Prueba AutoMacro!
Convertir cadena almacenada como valores
De manera similar, puede haber valores que necesite convertir de una cadena a un valor, por ejemplo, si necesita un cero a la izquierda en un número de teléfono.
123456789101112131415 | Sub ConvertString ()Atenuar strPhone como cadena, dblPhone como dobleDim rw como entero, i como entero'cuenta las filas para convertirrw = Rango ("A1", Rango ("A1"). Fin (xlDown)). Rows.Countrecorre las celdas y convierte cada una en un númeroPara i = 0 A rw - 1'poblar la cadenadblPhone = Rango ("A1"). Desplazamiento (i, 0)'poblar el doble con la cuerdastrPhone = "'0" & dblPhone'rellenar el rango con el númeroRango ("A1"). Desplazamiento (i, 0) = strphoneSiguiente yoEnd Sub |
Tenga en cuenta que debe comenzar la cadena de texto con un apóstrofo (‘), antes del cero para indicarle a Excel que ingrese el valor como cadena.