Как удалить разрыв строки в строке
Я хочу удалить строку Break из строки, если моя строка заканчивается с разрывом строки.
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
Ответы
Ответ 1
vbCrLf
и vbNewLine
являются vbNewLine
двумя символами, поэтому измените на 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
Ответ 2
str = Replace(str, vbLf, "")
Этот код выводит всю строку из кода
если вы просто хотите, чтобы последний вышел:
If Right(str, 1) = vbLf Then str = Left(str, Len(str) - 1)
как вы пробовали ОК.
Обновить:
line feed = ASCII 10, подача формы = ASCII 12 и возврат каретки = ASCII 13. Здесь мы ясно видим, что все мы знаем: ПК происходит от (электрической) пишущей машинки
vbLf - Chr (10) и означает, что курсор переместится на одну строку ниже (пишущая машинка: поверните ролик) vbCr - Chr (13) означает, что курсор перескакивает в начало (пишущая машинка: откат рулона)
В DOS разрыв строки всегда VBCrLf или Chr (13) & Chr (10), в любом случае, но, например, также с текстовыми полями в VB.
С другой стороны, в ячейке Excel разрыв строки - это только VBLf, вторая строка начинается с первой позиции даже без vbCr. С помощью vbCrLf перейдите на одну ячейку глубже.
Таким образом, это зависит от того, где вы читаете и получаете свою строку. если вы хотите удалить все ваши vbLf (Char (10)) и vbCr (Char (13)) в свою очередь, вы можете сделать это следующим образом:
strText = Replace(Replace(strText, Chr(10), ""), Chr(13), "")
Если вы хотите только удалить последний, вы можете протестировать его следующим образом:
If Right(str, 1) = vbLf or Right(str, 1) = vbCr Then str = Left(str, Len(str) - 1)
Ответ 3
Поскольку вы используете Excel, для этого вам не нужен VBA, вы можете просто использовать встроенную функцию "Очистить()", это приведет к удалению возвратов каретки, фидов строк и т.д. Например:
=Clean(MyString)
Ответ 4
Чистую функцию можно вызывать из VBA таким образом:
Range("A1").Value = Application.WorksheetFunction.Clean(Range("A1"))
Однако, как написано здесь, функция CLEAN была разработана для удаления из 32 текстовых символов из 32-х несимметричных символов в 7-битном ASCII-коде (значения от 0 до 31). В наборе символов Unicode имеются дополнительные непечатаемые символы (значения 127, 129, 141, 143, 144 и 157). Сама по себе функция CLEAN не удаляет эти дополнительные непечатаемые символы.
Рик Ротштейн написал код, чтобы справиться с этой ситуацией здесь так:
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
Ответ 5
просто это:
str = Replace(str, vbCrLf, "")
Ответ 6
mystring = Replace(mystring, Chr(10), "")
Ответ 7
Заменить (yourString, vbNewLine, "",, vbTextCompare)
Ответ 8
Я знаю, что этот пост очень старый, но я не мог найти ничего, что бы это сделало. Поэтому я, наконец, собрал это вместе со всех форумов.
Это приведет к удалению всех разрывов строк слева и справа и удалит все пустые строки. Затем обрезайте все, чтобы выглядеть хорошо. Измените, как вы считаете нужным. Я также сделал тот, который удаляет All Line Breaks, если это интересно. 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
Ответ 9
Попробуйте ввести следующую строку:
CleanString = Application.WorksheetFunction.Clean(MyString)
Ответ 10
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
Ответ 11
в случае, если кто-то придет посмотреть и находит это старое сообщение:
При поиске последних или первых символов, которые являются символом newline/vbcrlf и т.д., Попробуйте:
trim(string)
для снятия спереди и сзади
rtrim(string)
для удаления с конца
ltrim(string)
для удаления спереди