it-swarm.com.de

So entfernen Sie Zeilenumbrüche in Zeichenfolgen

Ich möchte den Zeilenumbruch aus der Zeichenfolge entfernen, wenn meine Zeichenfolge mit Zeilenumbruch endet.

Sub linebreak(myString)
If Len(myString) <> 0 Then
If Right$(myString, 1) = vbCrLf Or Right$(myString, 1) = vbNewLine Then myString = Left$(myString, Len(myString) - 1)
End If
End Sub
30
Code Hungry

vbCrLf und vbNewLine sind eigentlich zwei Zeichen lang, um zu Right$(myString, 2)

Sub linebreak(myString)
    If Len(myString) <> 0 Then
        If Right$(myString, 2) = vbCrLf Or Right$(myString, 2) = vbNewLine Then 
            myString = Left$(myString, Len(myString) - 2)
        End If
    End If
End Sub
22
chris neilsen
str = Replace(str, vbLf, "")

Dieser Code entfernt alle Zeilenumbrüche aus dem Code

wenn Sie nur das letzte heraus haben wollen:

If Right(str, 1) = vbLf Then str = Left(str, Len(str) - 1)

so versuchten Sie es mit OK.


Aktualisieren:

Zeilenvorschub = ASCII 10 , Form Feed = ASCII 12 und Wagenrücklauf = ASCII 13 . Hier sehen wir deutlich, was wir alle wissen: Der PC kommt von der (elektrischen) Schreibmaschine

vbLf ist Chr (10) und bedeutet, dass der Cursor eine Zeile tiefer springt (Schreibmaschine: Walze drehen) vbCr is Chr (13) bedeutet den Cursor springt an den Anfang (Schreibmaschine: ziehen Sie die Rolle zurück)

InDOSist ein Zeilenumbruch in Dateien ohnehin immer VBCrLf oder Chr (13) & Chr (10) , aber z. auch mit den Textfeldern in VB.

In einer Excel-Zelle hingegen ist ein Zeilenumbruch nur VBLf , die zweite Zeile beginnt dann an der ersten Position auch ohne vbCr. Mit vbCrLf gehe dann eine Zelle tiefer .

Es hängt also davon ab, wo Sie Ihren String lesen und erhalten. Wenn Sie alle vbLf (Char (10)) und vbCr (Char (13)) in Ihrem Tring entfernen möchten, können Sie dies wie folgt tun: 

strText = Replace(Replace(strText, Chr(10), ""), Chr(13), "")

Wenn Sie nur das Letzte entfernen möchten, können Sie dies wie folgt testen:

If Right(str, 1) = vbLf or Right(str, 1) = vbCr Then str = Left(str, Len(str) - 1)
52
Moosli

Da Sie Excel verwenden, benötigen Sie hierfür kein VBA. Sie können einfach die integrierte Funktion "Clean ()" verwenden. Dadurch werden Wagenrücklauf, Zeilenvorschub usw.

=Clean(MyString)
6
Matt Donnan

Die Clean-Funktion kann von VBA folgendermaßen aufgerufen werden:

Range("A1").Value = Application.WorksheetFunction.Clean(Range("A1"))

Wie in hier geschrieben, wurde die CLEAN-Funktion entwickelt, um die ersten 32 nicht druckbaren Zeichen im 7-Bit-Code ASCII) aus dem Text zu entfernen. Der Unicode-Zeichensatz enthält zusätzliche nicht druckbare Zeichen (Werte 127, 129, 141, 143, 144 und 157). Die Funktion CLEAN entfernt diese zusätzlichen nicht druckbaren Zeichen nicht.

Rick Rothstein hat Code geschrieben, um auch mit dieser Situation fertig zu werden hier so:

Function CleanTrim(ByVal S As String, Optional ConvertNonBreakingSpace As Boolean = True) As String
  Dim X As Long, CodesToClean As Variant
  CodesToClean = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, _
                       21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 127, 129, 141, 143, 144, 157)
  If ConvertNonBreakingSpace Then S = Replace(S, Chr(160), " ")
  For X = LBound(CodesToClean) To UBound(CodesToClean)
    If InStr(S, Chr(CodesToClean(X))) Then S = Replace(S, Chr(CodesToClean(X)), "")
  Next
  CleanTrim = WorksheetFunction.Trim(S)
End Function
4
Rocketq

nur das:

str = Replace(str, vbCrLf, "")
4
decas
mystring = Replace(mystring, Chr(10), "")
3
user3117021

Versuchen Sie es mit der folgenden Zeile:

CleanString = Application.WorksheetFunction.Clean(MyString)
1
joe

Ich weiß, dass dieser Beitrag sehr alt ist, aber ich konnte nichts finden, was dies tun würde. Also habe ich es endlich aus allen Foren zusammengestellt. 

Dadurch werden alle Zeilenumbrüche von links und rechts entfernt und leere Zeilen entfernt. Dann trimmen Sie alles, um gut auszusehen. Ändern Sie, wie Sie es für richtig halten. Ich habe auch eines erstellt, das bei Interesse alle Zeilenumbrüche entfernt. TY

    Sub RemoveBlankLines()
    Application.ScreenUpdating = False
    Dim rngCel As Range
    Dim strOldVal As String
    Dim strNewVal As String

    For Each rngCel In Selection
        If rngCel.HasFormula = False Then
            strOldVal = rngCel.Value
            strNewVal = strOldVal
            Debug.Print rngCel.Address

            Do
            If Left(strNewVal, 1) = vbLf Then strNewVal = Right(strNewVal, Len(strNewVal) - 1)
            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            Do
            If Right(strNewVal, 1) = vbLf Then strNewVal = Left(strNewVal, Len(strNewVal) - 1)
            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            Do
            strNewVal = Replace(strNewVal, vbLf & vbLf, "^")
            strNewVal = Replace(strNewVal, Replace(String(Len(strNewVal) - _
                        Len(Replace(strNewVal, "^", "")), "^"), "^", "^"), "^")
            strNewVal = Replace(strNewVal, "^", vbLf)

            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            If rngCel.Value <> strNewVal Then
                rngCel = strNewVal
            End If

        rngCel.Value = Application.Trim(rngCel.Value)
        End If
    Next rngCel
    Application.ScreenUpdating = True
End Sub
1
Mouthpear

Ersetzen (yourString, vbNewLine, "", vbTextCompare)

1
Divyank Sabhaya
Private Sub Form_Load()
    Dim s As String

    s = "test" & vbCrLf & "this" & vbCrLf & vbCrLf
    Debug.Print (s & Len(s))

    s = Left(s, Len(s) - Len(vbCrLf))
    Debug.Print (s & Len(s))
End Sub
0
user1537510