Funciones de manipulación de cadenas de VBA y Operatoros
⚡ Resumen inteligente
Funciones de manipulación de cadenas de VBA y OperaLos tors combinan, miden y extracTexto dentro de macros de Excel. Esta página explica el operador de concatenación, las funciones Izquierda, Derecha, Medio, Longitud e InStr, la división y unión de cadenas, y los errores que con mayor frecuencia provocan fallos en el código de cadenas.

Cadena VBA Operatoros
Los datos de cadena se utilizan para almacenar datos compuestos por números, caracteres y símbolos. “Jul-2015” es un ejemplo de datos de cadena. Se compone de
- Personajes (julio)
- Símbolo (-)
- Numbers (2015)
Los operadores de cadena se utilizan para manipular datos de cadena. Por ejemplo, puede concatenar el valor de julio de 2015 a partir de las primeras 3 letras del mes y el año, como "Jul-2015".
La siguiente tabla muestra el operador de concatenación de cadenas VBA.
| S / N | Operator | Mareas Ideales para Lecciones | Ejemplo | Resultado |
|---|---|---|---|---|
| 1 | & | Concatenar: este operador se utiliza para concatenar cadenas. | “Juan” y “Gama” | Fulano de Tal |
Fuente de ejemplo Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
La ejecución del código anterior produce el siguiente resultado
El símbolo "&" no es el único que aparece para unir texto, y la diferencia entre ambos importa cuando hay números de por medio.
Diferencia entre & y + para la concatenación de cadenas
VBA acepta tanto el signo de ampersand como el signo más entre dos valores de texto, por lo que los principiantes suelen considerarlos intercambiables. Sin embargo, su comportamiento es diferente cuando uno de los operandos es un número o un valor vacío, y solo uno de ellos es seguro.
| Comportamiento | & (&) | + (Más) |
|---|---|---|
| Dos valores de texto | Se une a ellos: “Guru“ y “99” devuelve Guru99 | Se une a ellos: “Guru” + “99” devuelve Guru99 |
| Texto y un número | Convierte el número a texto: “Edad ” & 30 devuelve Edad 30 | Genera un error de incompatibilidad de tipos. |
| Dos cadenas numéricas | “10” y “5” devuelve 105 | “10” + “5” pueden sumar y devolver 15. |
| Un valor nulo | Trata Null como una cadena vacía. | Devuelve Null y descarta todo el resultado. |
💡 Consejo: Utilice siempre el signo de ampersand para la concatenación y reserve el signo más para operaciones aritmeticas. Coloque un espacio antes y después del signo de ampersand, porque VBA interpreta Total& como un carácter de declaración de tipo Long.
Funciones de manipulación de cadenas de VBA
La manipulación de cadenas VBA es un elemento importante en Excel VBA para programación de macros y operaciones con cadenas. Excel ofrece varios tipos de funciones de manipulación de cadenas de VBA, como:
- Izquierda: se utiliza para extract caracteres del lado izquierdo de la cadena
- Derecha: se utiliza para extract caracteres del lado derecho de la cadena
- Mid: se utiliza para extracuna subcadena del medio de una cadena
- Len: se utiliza para encontrar la longitud de una cadena
- InStr: se utiliza para encontrar la posición de una subcadena en una cadena
- Trim: se utiliza para eliminar espacios de ambos extremos de una cadena.
- Reemplace : se utiliza para intercambiar cada ocurrencia de una subcadena por otra
- UCase / LCase: se utilizan para convertir una cadena a mayúsculas o minúsculas.
La tabla que aparece a continuación muestra la sintaxis de cada función con un ejemplo práctico, para que pueda copiar el patrón directamente en una macro.
| Función | Sintaxis | Ejemplo | Resultado |
|---|---|---|---|
| Izquierda | Izquierda(cadena, longitud) | Izquierda (“Julio 2015”, 3) | Jul |
| Derecha | Derecha(cadena, longitud) | Derecha (“Julio-2015”, 4) | 2015 |
| Mid | Medio (cuerda, inicio, longitud) | Mediados (“julio de 2015”, 5, 4) | 2015 |
| Len | Longitud(cadena) | Len (“julio de 2015”) | 8 |
| InStr | InStr(inicio, cadena, subcadena) | InStr(1, “julio de 2015”, “-“) | 4 |
| Trim | Recortar (cadena) | Recortar(" Guru99 “) | Guru99 |
| Reemplace | Reemplazar(cadena, buscar, reemplazar) | Reemplazar ("julio de 2015", "-", "/") | Julio / 2015 |
| UCase | UCase(cadena) | UCase (“guru99”) | Guru99 |
La macro que se muestra a continuación combina varias de estas funciones para reconstruir una etiqueta de fecha a partir de sus partes.
Sub StringFunctionsDemo() Dim Source As String Dim MonthPart As String Dim YearPart As String Source = "July-2015" ' Take the first three characters MonthPart = Left(Source, 3) ' Take the last four characters YearPart = Right(Source, 4) MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions" End Sub
Al ejecutar la macro se muestra Jul-2015. Cada función devuelve un nuevo valor y deja la cadena original intacta, por lo que los resultados se pueden combinar de forma segura en una sola expresión.
Todas estas funciones trabajan con una cadena de texto a la vez. Cuando un solo valor contiene una lista completa, otras dos funciones lo gestionan mejor.
Cómo dividir y unir cadenas en VBA
Los datos que se pegan en Excel suelen llegar como un único valor largo con un separador entre cada elemento, como por ejemplo «Pepsi,Coca-Cola,Fanta,Jugo». Leerlo con las funciones Mid e InStr es lento y poco fiable. VBA proporciona un par de funciones específicas para esta tarea.
Dividida Toma una cadena delimitada y devuelve una matriz con índice base cero, con un elemento por cada elemento. Recibir el boletín Hace lo contrario: toma un array y devuelve una sola cadena con un separador entre los elementos. Ten en cuenta que Join funciona con un array, no con dos cadenas separadas.
Sub SplitAndJoinDemo() Dim Source As String Dim Items() As String Dim i As Long Source = "Pepsi,Coke,Fanta,Juice" ' Break the value into an array on every comma Items = Split(Source, ",") For i = LBound(Items) To UBound(Items) Sheet1.Cells(i + 1, 1).Value = Items(i) Next i ' Rebuild the list with a different separator MsgBox Join(Items, " | "), vbOKOnly, "Joined List" End Sub
El bucle escribe cada bebida en su propia fila de la hoja de cálculo, y el cuadro de mensaje muestra Pepsi | Coca-Cola | Fanta | Zumo. Tres puntos hacen que este patrón sea fiable en código de producción:
- Resultado basado en cero: Split siempre devuelve una matriz numerada desde 0, independientemente del valor de Option Base, por lo que conviene controlar el bucle con LBound y UBound en lugar de un número fijo.
- Declarar como String(): Asigne el resultado a una matriz de cadenas dinámica. Declarar primero un tamaño fijo provoca un error de compilación.
- Entrada vacía: Dividir una cadena vacía devuelve una matriz sin elementos, así que prueba con UBound antes de leer Items(0).
Incluso con la función correcta elegida, el código de cadena falla de algunas maneras predecibles.
Errores comunes de cadenas de VBA y cómo solucionarlos
La mayoría de los errores de cadena en Excel VBA se deben a una breve lista de causas. Reconocer el síntoma evita largas sesiones de depuración.
- Error de coincidencia de tipos en la concatenación: Se utilizó un signo más entre el texto y un número. Reemplácelo por una ampersand, que convierte el número automáticamente.
- InStr devuelve 0: No se encontró la subcadena. InStr devuelve 0 en lugar de -1 en caso de error, por lo que se debe comprobar si el valor es mayor que cero antes de pasar el resultado a Mid.
- Llamada a procedimiento no válida en Mid o Left: La longitud solicitada es negativa, o la posición inicial es inferior a 1. Proteja la llamada con Len para que la longitud nunca exceda la cadena.
- Comparaciones que deberían coincidir pero no lo hacen: Los espacios finales de los datos importados rompen la igualdad. Envuelva ambos lados con Trim y use StrComp cuando se deba ignorar el uso de mayúsculas y minúsculas.
- Texto que no se convertirá en un número: Un valor como "1,200" falla en la aritmética debido al separador. Elimínelo con Replace antes de convertirlo con CLng.
Descargue Excel que contiene el código anterior
Descargue el archivo Excel anterior. Code


