Códigos de salto de línea

Al procesar texto en VBA, el manejo adecuado de los códigos de salto de línea es crucial. Este artículo explica los diferentes tipos de códigos de salto de línea en VBA y cómo se comportan.

Tipos de códigos de salto de línea en VBA

Hay dos caracteres primarios de salto de línea usados en VBA:

  1. CR (Retorno de carro): Código ASCII 13
  2. LF (Salto de línea): Código ASCII 10

En entornos Windows, la combinación de CR y LF—llamada CRLF (Retorno de carro + Salto de línea)—es el estándar.

Ejemplos de uso de códigos de salto de línea

Aquí hay un ejemplo típico de manejo de saltos de línea en VBA:

Sub InsertarSaltoLinea()
    Dim str As String
    str = "Esta línea tiene un salto después." & vbCrLf & "Esta es una nueva línea."
    MsgBox str
End Sub

Usando vbCrLf para saltos de línea

vbCrLf es la combinación CRLF comúnmente usada en Windows. Comienza una nueva línea. En este ejemplo, vbCrLf muestra dos líneas de texto en un cuadro de mensaje.

Usando vbCr y vbLf individualmente

VBA también proporciona vbCr (Retorno de carro) y vbLf (Salto de línea), pero vbCrLf es generalmente recomendado. Usar vbCr o vbLf solos es raro, pero puede ser útil cuando se trabaja con sistemas heredados específicos o formatos de archivo.

Sub UsarCrYLfIndividualmente()
    Dim strCr As String
    Dim strLf As String
    strCr = "Después de esta línea viene un retorno de carro." & vbCr & "Este texto sigue."
    strLf = "Después de esta línea viene un salto de línea." & vbLf & "Este texto sigue."
    MsgBox strCr
    MsgBox strLf
End Sub

Comportamiento de saltos de línea

Saltos de línea en cuadros de texto y celdas

Para incluir un salto de línea en el valor de una celda, lo más seguro es usar vbLf, ya que los saltos introducidos manualmente con Alt + Enter se guardan como LF. El salto solo se muestra si la opción Ajustar texto de la celda está activada (WrapText = True).

Saltos de línea en entrada/salida de archivos

Al leer o escribir archivos, presta atención al manejo de saltos de línea. Windows usa CRLF como estándar, pero los sistemas basados en Unix usan solo LF. Al intercambiar archivos entre diferentes sistemas, puede que necesites convertir los códigos de salto de línea apropiadamente. Ten en cuenta que la instrucción Print # añade automáticamente un salto de línea al final de la salida, por lo que no hace falta añadir vbCrLf al final de la cadena. Los archivos escritos con Open ... For Output usan la página de códigos predeterminada del sistema, no UTF-8.

Sub EscribirEnArchivo()
    Dim numArchivo As Integer
    Dim texto As String
    numArchivo = FreeFile
    Open "C:\ejemplo.txt" For Output As #numArchivo
    texto = "Esta línea termina aquí" & vbCrLf & "La siguiente línea comienza aquí."
    Print #numArchivo, texto
    Close #numArchivo
End Sub
Nota importante

Los diferentes códigos de salto de línea pueden causar problemas al intercambiar archivos de texto entre plataformas. Por ejemplo, un archivo creado en Windows puede mostrarse incorrectamente cuando se abre en un sistema Unix, apareciendo como saltos de línea inapropiados o mostrando caracteres extra.

Constantes de salto de línea en VBA

Aquí hay un resumen de todas las constantes relacionadas con saltos de línea en VBA:

ConstanteValorDescripción
vbCrLfChr(13) & Chr(10)Retorno de carro + Salto de línea (estándar Windows)
vbCrChr(13)Solo retorno de carro
vbLfChr(10)Solo salto de línea
vbNewLineSegún el sistemaCRLF en Windows, CR en Mac (según la documentación de Microsoft)

Ejemplos prácticos

Dividir texto por saltos de línea

Sub DividirPorSaltoLinea()
    Dim texto As String
    Dim lineas() As String

    texto = "Línea 1" & vbCrLf & "Línea 2" & vbCrLf & "Línea 3"

    ' Dividir por CRLF
    lineas = Split(texto, vbCrLf)

    Dim i As Integer
    For i = LBound(lineas) To UBound(lineas)
        Debug.Print "Línea " & (i + 1) & ": " & lineas(i)
    Next i
End Sub

Convertir formatos de salto de línea

Sub ConvertirSaltosLinea()
    Dim texto As String

    ' Texto original con saltos de línea Unix (solo LF)
    texto = "Línea 1" & vbLf & "Línea 2" & vbLf & "Línea 3"

    ' Convertir a formato Windows (CRLF)
    texto = Replace(texto, vbLf, vbCrLf)

    Debug.Print texto
End Sub
チェック

Los saltos de línea introducidos en las celdas de Excel con Alt + Enter se guardan como vbLf. Al dividir valores de celda con saltos de línea, divide por vbLf. Activa WrapText para que se muestren.

Resumen

Entender los códigos de salto de línea es esencial cuando se trabaja con texto en VBA:

  • Usa vbCrLf para saltos de línea de propósito general en Windows
  • Ten en cuenta que las celdas de Excel usan vbLf internamente
  • Al intercambiar archivos entre sistemas, convierte los códigos de salto de línea según sea necesario
  • Usa la constante apropiada para tu caso de uso específico

Al entender estas diferencias, puedes mejorar la compatibilidad del programa y evitar errores inesperados al procesar texto.

#VBA #Salto de línea #CR #LF #vbCrLf