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.

  • 🔤 Datos de cadena: Un valor formado a partir de caracteres, símbolos y números, como el texto Jul-2015.
  • Concatenación Operacolina: El símbolo & une dos cadenas, por lo que “John ” & “Doe” devuelve John Doe.
  • ✂️ ExtracFunciones de ción: Las funciones Left, Right y Mid extraen una subcadena del principio, del final o del medio de un valor.
  • 📏 Funciones de medición: Len cuenta los caracteres e InStr devuelve la posición donde comienza una subcadena.
  • 🧩 Dividir y unir: La operación Split divide una cadena delimitada en una matriz, y la operación Join reconstruye una matriz en una sola cadena.
  • ⚠️ Errores comunes: La incompatibilidad de tipos, el hecho de que InStr devuelva cero y los espacios finales son las causas de la mayoría de los fallos en las comparaciones.

Funciones de manipulación de cadenas de VBA y Operatoros

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

Cadena VBA OperaFuente de ejemplo de tors Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

La ejecución del código anterior produce el siguiente resultado

Cadena VBA OperaFuente de ejemplo de tors Code

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

Preguntas Frecuentes

Una cadena de longitud variable puede almacenar hasta aproximadamente dos mil millones de caracteres, y una cadena de longitud fija, hasta 65 400. Sin embargo, una celda de una hoja de cálculo solo almacena 32 767 caracteres, por lo que los valores más largos se truncan al escribirlos en la hoja.

El signo de igual compara los valores distinguiendo entre mayúsculas y minúsculas por defecto. Para obtener un resultado que no distinga entre mayúsculas y minúsculas, utilice StrComp(a, b, vbTextCompare) o coloque Option Compare Text al principio del módulo para cambiar la configuración predeterminada de todo el módulo.

El símbolo & convierte cada operando a texto antes de unirlos, por lo que 10 & 5 devuelve la cadena 105. Mantén los valores numéricos y súmalos primero; luego, concatena el resultado si necesita aparecer dentro de un mensaje.

Sí. Describe la entrada y la salida deseada, por ejemplotracEn el código anterior al primer guion, un asistente de IA devuelve una expresión Left e InStr. Pruébalo con casos límite como un guion faltante.

Sí. Si pegas una expresión anidada como Mid con InStr en su interior, un asistente de IA la divide en pasos, nombra cada argumento e indica el caso en el que InStr devuelve cero y la llamada falla.

Resumir este post con: