Obsidean_VM/01-Documentation/Scripts Excel - VBA/Excel - VBA - ReemplazarSal...

2.1 KiB

La función ReemplazarSaltosLinea hace lo siguiente:

  1. Recorre el texto carácter por carácter
  2. Cuando encuentra un salto de línea (código ASCII 10 o 13), verifica:
    • Si el siguiente carácter NO es un espacio
    • Y si el último carácter agregado NO es un espacio
  3. Solo en ese caso, reemplaza el salto de línea por un espacio

Public Function ReemplazarSaltosLinea(texto As String) As String
    ' Declaración de variables
    Dim resultado As String
    Dim i As Long
    Dim longitudTexto As Long
    Dim caracterActual As String
    Dim caracterSiguiente As String
    
    ' Inicializar variables
    resultado = ""
    longitudTexto = Len(texto)
    
    ' Recorrer el texto caracter por caracter
    For i = 1 To longitudTexto
        caracterActual = Mid(texto, i, 1)
        
        ' Si no es el último caracter, obtener el siguiente
        If i < longitudTexto Then
            caracterSiguiente = Mid(texto, i + 1, 1)
        Else
            caracterSiguiente = ""
        End If
        
        ' Verificar si el caracter actual es un salto de línea
        If Asc(caracterActual) = 10 Or Asc(caracterActual) = 13 Then
            ' Si el siguiente caracter no es un espacio y el último caracter agregado no es un espacio
            If caracterSiguiente <> " " And Right(resultado, 1) <> " " Then
                resultado = resultado & " "
            End If
        Else
            resultado = resultado & caracterActual
        End If
    Next i
    
    ReemplazarSaltosLinea = resultado
End Function

' Función de prueba
Sub ProbarReemplazarSaltosLinea()
    ' Casos de prueba
    Dim texto1 As String
    texto1 = "Hola" & vbCrLf & "mundo"
    Debug.Print "Prueba 1: " & ReemplazarSaltosLinea(texto1)  ' Debería imprimir: "Hola mundo"
    
    Dim texto2 As String
    texto2 = "Hola " & vbCrLf & "mundo"
    Debug.Print "Prueba 2: " & ReemplazarSaltosLinea(texto2)  ' Debería imprimir: "Hola mundo"
    
    Dim texto3 As String
    texto3 = "Hola" & vbCrLf & vbCrLf & "mundo"
    Debug.Print "Prueba 3: " & ReemplazarSaltosLinea(texto3)  ' Debería imprimir: "Hola mundo"
End Sub