VBA – Funciones de cadenas y subcadenas
In this Article
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
La función Len ha contado todos los caracteres del texto AutomateExcel, que son 13 letras.