VBA – Funciones de cadenas y subcadenas

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on febrero 21, 2022

VBA tiene muchas funciones de cadena que le permitirán manipular y trabajar con texto y cadenas en su código. En este tutorial, vamos a cubrir las funciones que le permitirán extraer subcadenas de las cadenas, eliminar espacios de las cadenas, convertir el caso de un texto o cadena, comparar cadenas y otras funciones de cadena útiles.

Extraer una subcadena

Función Left

La función Left le permite extraer una subcadena de un texto o cadena comenzando por el lado izquierdo. La sintaxis de la función Left es: Left(cadena, numeroDeCaracteres) donde:

  • cadena – Es el texto original.
  • numeroDeCaracteres – Es un entero que especifica el número de caracteres a extraer del texto original empezando por el principio.

El siguiente código muestra cómo utilizar la función Left  para extraer los cuatro primeros caracteres de la cadena dada:

Sub usandoLaFuncionLeft()

Dim valor1 As String
Dim valor2 As String

valor1 = "AutomateExcel"
valor2 = Left(valor1, 4)

MsgBox valor2

End Sub

El resultado es:

How to Use the Left String Function in VBA

La Función Izquierda ha extraído las cuatro primeras letras de AutomateExcel, las cuales son: Auto.

Función Right

La función Right le permite extraer una subcadena de un texto o cadena comenzando por el lado derecho. La sintaxis de la función Right es: Right(Cadena, Número_de_caracteres) donde:

  • Cadena – Es el texto original.
  • Número_de_caracteres Es un entero que especifica el número de caracteres a extraer del texto original empezando por el final.

El siguiente código muestra cómo utilizar la función Right para extraer los últimos cuatro caracteres de la cadena:

Sub UsandoLaFuncionRight()

Dim valor1 As String
Dim valor2 As String

valor1 = "AutomateExcel"
valor2 = Right(valor1 , 4)

MsgBox valor2 

End Sub

El resultado es:

Using the Right String Function in VBA

La Función Derecha ha extraído las cuatro últimas letras de AutomateExcel, las cuales son: xcel.

Función Mid

La función Mid le permite extraer una subcadena de un texto o cadena, comenzando desde cualquier posición dentro de la cadena que usted especifique. La sintaxis de la Función Mid es: Mid(Cadena, Posición_inicial, [Número_de_caracteres]) donde:

  • Cadena – Es el texto original.
  • Posición_inicial – Es la posición en el texto original, desde donde la función comenzará a extraer.
  • Número_de_caracteres(Opcional)Es un número entero que especifica el número de caracteres a extraer del texto original comenzando desde Posición_inicial. Si está en blanco, la función MID devolverá todos los caracteres desde la Posición_inicial.

El siguiente código muestra cómo utilizar la Función Mid para extraer cuatro caracteres, a partir de la segunda posición o carácter de la cadena:

Sub UsandoLaFuncionMid()

Dim valor1 As String
Dim valor2 As String

valor1 = "AutomateExcel"
valor2 = Mid(valor1, 2, 4)

MsgBox valor2 

End Sub

El resultado se envía a un msgbox:

Using the Mid String Function in VBA

La función Mid ha extraído las cuatro letras de AutomateExcel a partir del segundo carácter/posición/letra, las cuales son: utom.

Encontrando la Posición de una Subcadena

Función Instr

La función Instr devuelve la posición inicial de una subcadena dentro de otra cadena. Esta función distingue entre mayúsculas y minúsculas. La sintaxis de la función Instr es: Instr([Inicio], Cadena, Subcadena, [Comparar]) donde:

  • Inicio(Opcional) – Especifica la posición inicial a partir de la cual buscará la función. Si está en blanco, se utiliza el valor por defecto de 1.
  • Cadena – El texto original.
  • Subcadena – La subcadena dentro del texto original cuya posición desea encontrar.
  • Comparar(Opcional) – Especifica el tipo de comparación a realizar. Si está en blanco, se utiliza la comparación binaria.

-vbBinaryCompare – Comparación binaria (las mayúsculas y minúsculas se consideran diferentes)

-vbTextCompare – Comparación de texto (Las mayúsculas y las minúsculas se consideran iguales)

-vbDatabaseCompare – Comparación de bases de datos (Esta opción se utiliza sólo en Microsoft Access, y es una comparación basada en la base de datos)

El siguiente código muestra cómo utilizar la función Instr para determinar la primera aparición de la subcadena «tex» dentro de la cadena principal:

Sub usandoInStr()

Dim valor1 As String
Dim posicionDeSubCadena As Integer

valor1 = "Este es el texto "
posicionDeSubCadena = InStr(1, valor1, "tex")

Debug.Print posicionDeSubCadena 

End Sub

El resultado (enviado a la ventana inmediata) es:

funcion InStr

 

La función Instr ha devuelto la posición de la primera ocurrencia de la subcadena «tex» que es 12. Note que esta función incluye los espacios en el conteo.

Función InStrRev

La función InstrRev devuelve la posición inicial de una subcadena dentro de otra cadena pero comienza a contar la posición desde el final de la cadena. Esta función distingue entre mayúsculas y minúsculas. La sintaxis de la función InStrRev es: InstrRev(Cadena, Subcadena, [Inicio], [Comparación]) donde:

  • Cadena – El texto original.
  • Subcadena La subcadena dentro del texto original cuya posición desea encontrar.
  • Inicio(Opcional) – Especifica la posición a partir de la cual se inicia la búsqueda. Si está en blanco, la función comienza a buscar desde el último carácter.
  • Comparar (Opcional) – Especifica el tipo de comparación a realizar. Si está en blanco, se utiliza la comparación binaria.

-vbBinaryCompare – Comparación binaria (las mayúsculas y las minúsculas se consideran diferentes)

-vbTextCompare – Comparación de texto (las mayúsculas y las minúsculas se consideran iguales)

-vbDatabaseCompare – Comparación de bases de datos (Esta opción se utiliza sólo en Microsoft Access, y es una comparación basada en la base de datos)

El siguiente código muestra cómo utilizar la función InStrRev para determinar la primera aparición de la subcadena «el» dentro de la cadena principal, empezando por el final de la cadena:

Sub usandoInStrRev()

Dim valor1 As String
Dim posicionDeSubCadena As Integer

valor1 = "Este es el texto "
posicionDeSubCadena = InStrRev(valor1, "el")

Debug.Print posicionDeSubCadena

End Sub

El resultado se envía a la ventana inmediata:

funcion InStrRev

 

La función InstrRev ha devuelto la posición de la primera ocurrencia de la subcadena «el», pero comenzando el conteo desde el final que es 9. Note que esta función incluye los espacios en el conteo.

Eliminando Espacios de una Cadena

Función LTrim

La función LTrim elimina todos los espacios iniciales de un texto o cadena. La sintaxis de la función LTrim es: LTrim(Cadena) donde:

  • Cadena – El texto original.

El siguiente código muestra cómo utilizar la Función VBA LTrim para eliminar los espacios iniciales en la cadena dada:

Sub usandoLaFuncionLTrim()

Dim valor1 As String
Dim valor2 As String

valor1 = " Esta es la dirección del sitio web https://www.automateexcel.com/excel/"
valor2 = LTrim(valor1)

Debug.Print valor1
Debug.Print valor2

End Sub

Resultado en la ventana Inmediato:

funcion LTrim

La función LTrim ha eliminado los espacios iniciales del valor1, que se muestra en la segunda linea de la ventaa Inmediato.

Función RTrim

La función RTrim elimina todos los espacios finales de un texto o cadena. La sintaxis de la función RTrim es: RTrim(Cadena) donde:

  • Cadena – El texto original.

El siguiente código muestra cómo utilizar la Función RTrim de VBA para eliminar los espacios finales en la cadena dada:

Sub usandoLaFuncionRTrim()

Dim valor1 As String
Dim valor2 As String

valor1 = "web https://www.automateexcel.com/excel/ "
valor2 = RTrim(valor1)

Debug.Print valor1 + valor1
Debug.Print valor2 + valor2

End Sub

El resultado en la ventana Inmediato:

funcion RTrim

La función RTrim ha eliminado los espacios finales del valor1 en la variable valor2.

Función Trim

La función Trim elimina todos los espacios iniciales y finales de un texto o cadena. La sintaxis de la función Trim es: Trim(Cadena) donde:

  • Cadena – El texto original.

El siguiente código muestra cómo utilizar la función de recorte de VBA para eliminar los espacios iniciales y finales de la cadena dada:

Sub usandoLaFuncionTrim()

Dim valor1 As String
Dim valor2 As String

valor1 = " Esta es la dirección del sitio web https://www.automateexcel.com/excel/ "
valor2 = Trim(valor1)

Debug.Print valor1
Debug.Print valor2

End Sub

Los resultados son:

funcion Trim

La función de recorte ha eliminado los espacios iniciales y finales del valor1, que se muestra en la variable valor2 en la ventana de Inmediato.

Funciones Case

Función LCase

La función LCase convierte las letras de un texto o cadena en minúsculas. La sintaxis de la función LCase es: LCase(Cadena) donde:

  • Cadena – El texto original.

El siguiente código muestra cómo utilizar la función LCase para convertir todas las letras de la cadena dada a minúsculas:

Sub UsandoLaFuncionLCase()

Dim valor1 As String
Dim valor2 As String

valor1 = "ESTE ES EL PRODUCTO"
valor2 = LCase(valor1)

MsgBox valor2

End Sub

El resultado es:

funcion LCase

 

La Función LCase ha convertido todas las letras de la cadena a minúsculas.

Función UCase

La función UCase convierte las letras de un texto o cadena en mayúsculas. La sintaxis de la función UCase es: UCase(Cadena) donde:

  • Cadena – El texto original.

El siguiente código muestra cómo utilizar la función UCase para convertir todas las letras de la cadena dada en mayúsculas:

Sub UsandoLaFuncionUCase()

Dim valor1 As String
Dim valor2 As String

valor1 = "este es el producto"
valor2 = UCase(valor1)

MsgBox valor2

End Sub

El resultado es:

funcion UCase

 

La Función UCase ha convertido todas las letras de la cadena a mayúsculas.

Función StrConv

La Función StrConv puede convertir las letras de un texto o cadena a mayúsculas, minúsculas, mayúsculas propias o unicode dependiendo del tipo de conversión que usted especifique. La sintaxis de la función StrConv es: StrConv(Cadena, Conversión, [LCID]) donde:

  • Cadena – El texto original.
  • Conversión – El tipo de conversión que desea.
  • [LCID](Opcional) – Un parámetro opcional que especifica el LocaleID. Si está en blanco, se utiliza el LocaleID del sistema.

El siguiente código muestra cómo utilizar la Función StrConv String para convertir la cadena a las mayúsculas y minúsculas adecuadas:

Sub UsandoLaFuncionStrConv()

Dim valor1 As String
Dim valor2 As String

valor1 = "este es EL producto"
valor2 = StrConv(valor1, vbProperCase)

MsgBox valor2

End Sub

El resultado es:

funcion StrConv

 

Se especifica el tipo de conversión que se quiere realizar mediante el parámetro de conversión:

  • vbLowerCase convierte todas las letras del texto en minúsculas.
  • vbUpperCase convierte todas las letras del texto en mayúsculas.
  • vbProperCase convierte la primera letra de cada palabra del texto en mayúscula, mientras que todas las demás letras se mantienen en minúscula.
  • vbUnicode convierte una cadena a unicode.
  • vbFromUnicode convierte una cadena de unicode a la página de códigos por defecto del sistema.

Comparación de cadenas

Función StrComp

La función StrComp le permite comparar dos cadenas. La función devuelve:

  • 0 si las dos cadenas coinciden
  • -1 si la cadena1 es menor que la cadena2
  • 1 si la cadena1 es mayor que la cadena2
  • Un valor nulo si alguna de las cadenas es nula

El siguiente código muestra cómo usar la función StrComp para comparar dos cadenas:

Sub UsandoLaFuncionStrComp()

Dim valor1 As String
Dim valor2 As String
Dim resultado As Integer

valor1 = "AutomatizarExcel"
valor2 = "AutomatizarExcel"
resultado = StrComp(valor1, valor2)
Debug.Print resultado

End Sub

El resultado es:

funcion StrComp

 

La función StrComp ha encontrado una coincidencia exacta entre las dos cadenas y ha devuelto 0.

Operador Like

El Operador Like le permite comparar un texto o cadena con un patrón y ver si hay una coincidencia. Por lo general, el operador «Like» se utiliza junto con los comodines. El siguiente código muestra cómo utilizar el Operador Like:

Sub UsandoElOperadorLike()

Dim valor1 As String
valor1 = "Veamos la salida"

If valor1 Like "*Veamos*" Then
    MsgBox "Hay una coincidencia, esta cadena contiene la palabra Veamos"
    Else
    MsgBox "No se ha encontrado ninguna coincidencia"
End If

End Sub

El resultado es:

operador Like

 

Los comodines que pueden utilizar con el Operador Like para encontrar coincidencias de patrones incluyen:

  • ? que coincide con un solo carácter
  • # que coincide con un solo dígito
  • * que coincide con cero o más caracteres

El siguiente código muestra cómo utilizar el Operador Like y el comodín ? para encontrar una coincidencia de patrón en su código:

Sub UsandoElOperadorLikeconUnComodin()

Dim valor1 As String
valor1 = "Los"

If valor1 Like "??s" Then
    MsgBox "Hay una coincidencia, se encontró un patrón coincidente"
Else
    MsgBox "No se ha encontrado ninguna coincidencia"
End If

End Sub

El resultado entregado es:

 

operador Like con comodin

Otras funciones útiles de VBA para cadenas

Función Replace

La función Replace reemplaza un conjunto de caracteres en una cadena con otro conjunto de caracteres. La sintaxis de la función Replace es: Replace(Cadena, Cadena_a_buscar, Cadena_de_reemplazo, [Inicio], [Recuento], [Comparar]) donde:

  • Cadena – El texto original.
  • Cadena_a_buscar – La subcadena a buscar dentro del texto original.
  • Cadena_de_reemplazo – La subcadena con la que se reemplazará la subcadena Cadena_a_buscar.
  • Inicio(Opcional) – La posición desde la que se inicia la búsqueda dentro del texto original. Si está en blanco, se utiliza el valor 1 y la función comienza en la posición del primer carácter.
  • Recuento (Opcional) – El número de apariciones de la subcadena Buscar en el texto original a reemplazar. Si está en blanco, se reemplazan todas las apariciones de la subcadena Cadena_a_buscar .
  • Comparar (Opcional) – Especifica el tipo de comparación a realizar. Si está en blanco, se utiliza la comparación binaria.
    • -vbCompareBinario – Comparación binaria
    • -vbTextCompare – Comparación de texto
    • -vbDatabaseCompare – Comparación de base de datos (Esta opción se utiliza sólo en Microsoft Access, y es una comparación basada en la base de datos)

El siguiente código muestra cómo utilizar la función Replace:

Sub UsandoLaFuncionReplace()

Dim valor1 As String
Dim valor2 As String

valor1 = "ProductoABC"
valor2 = Replace(valor1, "ABC", "XYZ")

MsgBox valor2

End Sub

El resultado es:

funcion Replace

 

La Función Replace encontró la subcadena ABC dentro de ProductoABC y la reemplazó con la subcadena XYZ.

Función StrReverse

La función StrReverse invierte los caracteres de un texto o cadena dada. La sintaxis de la función StrReverse es: StrReverse(Cadena) donde:

  • Cadena – El texto original.

El siguiente código muestra cómo utilizar la Función StrReverse para invertir los caracteres de la cadena Producto:

Sub UsandoLaFuncionStrReverse()

Dim valor1 As String
Dim valor2 As String

valor1 = "Producto"
valor2 = StrReverse(valor1)

MsgBox valor2

End Sub

El resultado es:

funcion StrReverse

Función Len

La función Len devuelve el número de caracteres en una cadena de texto. La sintaxis de la función Len es: Len(Cadena) donde:

  • String – El texto original.

El siguiente código muestra cómo utilizar la función Len para determinar la longitud de la cadena AutomateExcel:

Sub UsandoLaFuncionLen()

Dim valor1 As String
Dim longitudCadena As Integer

valor1 = "AutomateExcel"
longitudCadena = Len(valor1)
Debug.Print longitudCadena

End Sub

El resultado es:

funcion Len

La función Len ha contado todos los caracteres del texto AutomateExcel, que son 13 letras.

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