VBA Tipo de Datos String (Cadena de Texto) – Dim Variable
In this Article
Tipo de Variable String (Cadena de Texto)
El tipo de datos String es uno de los más comunes en VBA. Almacena «cadenas» de texto.
Para declarar una variable String, se utiliza la sentencia Dim (abreviatura de Dimensión):
Dim strName as String
Para asignar un valor a una variable, se utiliza el signo igual:
strName = "Fred Smith"
Poniendo esto en un procedimiento se ve así:
Sub EjemploStr()
'declara la cadena
Dim strName as string
'rellena la cadena
strName = "Fred Smith"
'mostrar el cuadro de mensaje
MsgBox strname
End Sub
Si ejecuta el código anterior, se mostrará el siguiente cuadro de mensaje.
Variable de Cadena Fija
En realidad, hay dos tipos de variables de cadena: fijas y variables. La variable de cadena «variable» (mostrada en el ejemplo anterior) permite que su cadena sea de 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.
Dim strName as string *20
Cuando se define una variable fija, el número de caracteres de la variable queda bloqueado, aunque se utilicen menos caracteres. Fíjate en los espacios del siguiente gráfico: 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 has declarado una cadena sin especificar la longitud, entonces la cadena sólo contendrá tantos caracteres como se le pasen.
Declarar una Variable de Cadena a Nivel de Módulo o Global
En el ejemplo anterior, has declarado la variable String dentro de un procedimiento. Las variables declaradas con un procedimiento sólo pueden utilizarse dentro de ese procedimiento.
En cambio, puedes declarar las variables String a nivel de módulo o global.
Nivel de Módulo
Las variables a nivel de módulo se declaran en la parte superior de los módulos de código con la sentencia Dim.
Estas variables pueden utilizarse con cualquier procedimiento de ese módulo de código.
Nivel Global
Las variables de nivel global también se declaran en la parte superior de los módulos de código. Sin embargo, en lugar de utilizar la declaración Dim, se utiliza la declaración Public para indicar que la variable de cadena está disponible para ser utilizada en todo el proyecto VBA.
Public strName as String
Si declarara la variable de cadena a nivel de módulo y la utilizara en un módulo diferente, se produciría un error.
Sin embargo, si se utiliza la palabra clave Public para declarar la variable de cadena, el error no se produciría y el procedimiento se ejecutaría perfectamente.
Convertir los Valores Almacenados Como String
Puede haber un momento en el que tengas valores en Excel que estén almacenados como texto – por ejemplo, puedes haber importado un archivo CSV que puede haber traído texto en lugar de números.
Observe que el valor en A1 está alineado a la izquierda, lo que indica que es un valor de texto.
Se puede utilizar un Función VBA para convertir estos números en texto
Sub ConvertirValor()
'rellena la cadena
strQty = Range("A1")
'rellena el doble con la cadena
dblQty = strQty
'rellenar el rango con el número
Range("A1") = dblQty
End Sub
Una vez que ejecute el código, el número se moverá a la derecha, indicando que ahora está almacenado como un número.
Esto es particularmente útil cuando se hace un bucle a través de un gran rango de celdas.
Sub ConvertirValores()
Dim strQty As String, dblQty As Double
Dim rw As Integer, i As Integer
'contar las filas a convertir
rw = Range("A1", Range("A1").End(xlDown)).Rows.Count
'recorrer las celdas y convertir cada una de ellas en un número
For i = 0 To rw - 1
'rellenar la cadena
strQty = Range("A1").Offset(i, 0)
'rellenar el doble con la cadena
dblQty = strQty
'rellenar el rango con el número
Range("A1").Offset(i, 0) = dblQty
Next i
End Sub
El resultado será que todas las celdas se convertirán en números
Convertir las Cadenas Almacenadas Como Valores
Del mismo modo, puede haber valores que necesite convertir de una cadena a un valor, por ejemplo, si necesita un cero inicial en un número de teléfono.
Sub ConvertirNumeros_a_Cadena()
Dim strPhone As String, dblPhone As Double
Dim rw As Integer, i As Integer
'contar las filas a convertir
rw = Range("A1", Range("A1").End(xlDown)).Rows.Count
'recorrer las celdas y convertir cada una de ellas en un número
For i = 0 To rw - 1
'llenar la cadena
dblPhone = Range("A1").Offset(i, 0)
'rellenar el doble con la cadena antepiniendo el '0
strPhone = "'0" & dblPhone
'rellenar el rango con el número
Range("A1").Offset(i, 0) = strPhone
Next i
End Sub
Tenga en cuenta que debe comenzar la cadena de texto con un apóstrofe (‘), antes del cero, para indicar a Excel que introduzca el valor como cadena.