VBA Tipo de Datos String (Cadena de Texto) – Dim Variable

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on agosto 14, 2022

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.

Mostrar Mensaje Varible Tipo String

 

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 caracteresCódigo Cadena Fija

Sin embargo, si has declarado una cadena sin especificar la longitud, entonces la cadena sólo contendrá tantos caracteres como se le pasen.

Código Cadena Normal

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.

Variable con Alcance Local o Privado

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.

Variable Nivel de Módulo

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

Declarar Variable Pública

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

Uso de Variable de Módulo en Otro Módulo

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.

Número Almacenado Como 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.

Número Almacenado Como Número

 

Esto es particularmente útil cuando se hace un bucle a través de un gran rango de celdas.

Lista de Números Almacenada Como Texto

 

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

Lista de 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.

Lista de Números a Convertir a Cadena

 

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

Lista de Números a Convertido a Cadena

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.

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples