Funciones de cadena
La manipulación de cadenas es una habilidad esencial al trabajar con datos en VBA. Ya sea analizando archivos CSV, validando entrada de usuario o formateando datos, frecuentemente necesitarás dividir, buscar, extraer y reemplazar texto.
Este artículo cubre las funciones de cadena más utilizadas en VBA, desde el uso básico hasta aplicaciones prácticas.
Cuándo necesitas manipulación de cadenas
La manipulación de cadenas es necesaria en muchos escenarios del mundo real:
- Procesamiento de datos CSV: Dividir cadenas separadas por comas en arrays
- Análisis de rutas de archivo: Extraer nombres de archivo o carpeta de rutas
- Validación de datos: Verificar si cadenas específicas están presentes
- Análisis de correo electrónico: Separar nombre de usuario y dominio
- Formateo de direcciones: Extraer componentes de estado, ciudad o código postal
- Datos de longitud fija: Leer caracteres específicos de posiciones conocidas
Resumen de funciones de cadena
Aquí están las principales funciones de cadena disponibles en VBA:
| Función | Propósito | Tipo de retorno |
|---|---|---|
| Split | Dividir cadena por delimitador | Array |
| Join | Combinar array en cadena | String |
| InStr | Encontrar posición de subcadena | Long |
| InStrRev | Encontrar posición desde el final | Long |
| Mid | Extraer desde posición especificada | String |
| Left | Extraer desde el principio | String |
| Right | Extraer desde el final | String |
| Replace | Reemplazar texto | String |
| Trim | Eliminar espacios inicial/final | String |
| Len | Obtener longitud de cadena | Long |
Función Split: Dividir cadenas
Sintaxis básica
Split(Cadena, [Delimitador], [Límite], [Comparar])
La función Split divide una cadena en cada delimitador y devuelve un array.
Uso básico
Sub SplitEjemploBasico()
Dim texto As String
Dim partes() As String
' Dividir cadena separada por comas
texto = "manzana,banana,naranja,uva"
partes = Split(texto, ",")
' Mostrar resultados
Dim i As Long
For i = LBound(partes) To UBound(partes)
Debug.Print i & ": " & partes(i)
Next i
' Salida:
' 0: manzana
' 1: banana
' 2: naranja
' 3: uva
End Sub
LBound(partes) siempre devuelve 0. Procesar datos CSV
Sub ProcesarDatosCSV()
Dim csvLine As String
Dim fields() As String
' Línea CSV (típicamente leída de archivo)
csvLine = "Juan García,Ventas,Nueva York,juan@ejemplo.com"
' Dividir por coma
fields = Split(csvLine, ",")
' Salida a celdas
Range("A1").Value = fields(0) ' Nombre
Range("B1").Value = fields(1) ' Departamento
Range("C1").Value = fields(2) ' Ubicación
Range("D1").Value = fields(3) ' Email
End Sub
Función Join: Combinar arrays
Sintaxis básica
Join(Array, [Delimitador])
Join es lo opuesto a Split—combina elementos de array en una sola cadena con un delimitador.
Sub JoinEjemploBasico()
Dim frutas() As Variant
Dim resultado As String
' Definir array
frutas = Array("manzana", "banana", "naranja")
' Unir con coma
resultado = Join(frutas, ",")
Debug.Print resultado ' manzana,banana,naranja
' Unir con espacio
resultado = Join(frutas, " ")
Debug.Print resultado ' manzana banana naranja
End Sub
Función InStr: Encontrar posición de texto
Sintaxis básica
InStr([Inicio], Cadena, CadenaBuscar, [Comparar])
InStr encuentra la posición de una subcadena dentro de una cadena. Devuelve 0 si no se encuentra.
Sub InStrEjemploBasico()
Dim texto As String
Dim pos As Long
texto = "Hola Mundo"
' Encontrar "Mundo"
pos = InStr(texto, "Mundo")
Debug.Print pos ' 6
' Encontrar "mundo" (sensible a mayúsculas por defecto)
pos = InStr(texto, "mundo")
Debug.Print pos ' 0 (no encontrado)
' Búsqueda sin distinguir mayúsculas
pos = InStr(1, texto, "mundo", vbTextCompare)
Debug.Print pos ' 6
End Sub
Funciones Left y Right
Función Left
Extrae caracteres desde el principio de una cadena.
Sub LeftEjemplo()
Dim texto As String
texto = "Hola Mundo"
Debug.Print Left(texto, 4) ' Hola
Debug.Print Left(texto, 1) ' H
End Sub
Función Right
Extrae caracteres desde el final de una cadena.
Sub RightEjemplo()
Dim texto As String
texto = "Hola Mundo"
Debug.Print Right(texto, 5) ' Mundo
Debug.Print Right(texto, 1) ' o
End Sub
Función Mid: Extraer subcadenas
Sintaxis básica
Mid(Cadena, Inicio, [Longitud])
Mid extrae una subcadena desde una posición especificada.
Sub MidEjemploBasico()
Dim texto As String
texto = "Hola Mundo"
' Extraer desde posición 6
Debug.Print Mid(texto, 6) ' Mundo
' Extraer 4 caracteres desde posición 1
Debug.Print Mid(texto, 1, 4) ' Hola
End Sub
Función Replace
Sintaxis básica
Replace(Cadena, Buscar, ReemplazarCon, [Inicio], [Cantidad], [Comparar])
Sub ReplaceEjemploBasico()
Dim texto As String
texto = "Hola Mundo"
' Reemplazar "Mundo" con "VBA"
Debug.Print Replace(texto, "Mundo", "VBA") ' Hola VBA
' Reemplazar todos los espacios con guiones bajos
texto = "Hola Mundo Como Estas"
Debug.Print Replace(texto, " ", "_") ' Hola_Mundo_Como_Estas
End Sub
Funciones Trim
VBA proporciona tres funciones de recorte:
| Función | Propósito |
|---|---|
| Trim | Eliminar espacios inicial y final |
| LTrim | Eliminar solo espacios iniciales |
| RTrim | Eliminar solo espacios finales |
Sub TrimEjemplo()
Dim texto As String
texto = " Hola Mundo "
Debug.Print "[" & Trim(texto) & "]" ' [Hola Mundo]
Debug.Print "[" & LTrim(texto) & "]" ' [Hola Mundo ]
Debug.Print "[" & RTrim(texto) & "]" ' [ Hola Mundo]
End Sub
Resumen
Las funciones de cadena de VBA son herramientas esenciales para el procesamiento de texto:
| Función | Caso de uso principal |
|---|---|
| Split | Analizar datos delimitados |
| Join | Combinar elementos de array |
| InStr | Encontrar posición de texto |
| Mid | Extraer subcadenas |
| Left/Right | Extraer desde los extremos |
| Replace | Sustitución de texto |
| Trim | Limpiar espacios en blanco |
| Len | Obtener longitud de cadena |
Domina estas funciones para manejar cualquier tarea de manipulación de cadenas eficientemente en VBA.