Функция обрезки непечатаемых символов

Функция Trim только обрезает пробелы. Мне нужна функция, которая обрезает все непечатаемые символы.

Мой код...

Private Sub CleanUpData()
    LastRow = Application.CountA(ActiveSheet.Range("A:A"))
    For CurrentRow = 2 To LastRow
        Cells(CurrentRow, 1) = Trim(Cells(CurrentRow, 1))
        Cells(CurrentRow, 2) = Trim(Cells(CurrentRow, 2))
        Cells(CurrentRow, 3) = Trim(Cells(CurrentRow, 3))
        Cells(CurrentRow, 4) = Trim(Cells(CurrentRow, 4))
    Next CurrentRow
End Sub

...ничего не делает.


person BoltBait    schedule 09.03.2011    source источник


Ответы (2)


Попробуй это:

 Public Function TrimComplete(ByVal sValue As String) As _
        String

        Dim sAns As String
        Dim sWkg As String
        Dim sChar As String
        Dim lLen As Long
        Dim lCtr As Long

        sAns = sValue
        lLen = Len(sValue)

        If lLen > 0 Then
            'Ltrim
            For lCtr = 1 To lLen
                sChar = Mid(sAns, lCtr, 1)
                If (Asc(sChar) > 32) and (Asc(sChar) < 127) Then Exit For
            Next

            sAns = Mid(sAns, lCtr)
            lLen = Len(sAns)

            'Rtrim
            If lLen > 0 Then
                For lCtr = lLen To 1 Step -1
                    sChar = Mid(sAns, lCtr, 1)
                    If (Asc(sChar) > 32) and (Asc(sChar) < 127) Then Exit For
                Next
            End If
            sAns = Left$(sAns, lCtr)
        End If

        TrimComplete = sAns

    End Function

Взято из

Ссылка на источник

person James    schedule 09.03.2011
comment
Хм... Верьте или нет, это не сработало! После запуска скрипта некоторые ячейки все еще имеют непечатаемые символы в конце. Это сведет меня с ума. (Да, каждая ячейка обрабатывается, и я правильно ее привязал.) - person BoltBait; 09.03.2011
comment
Хорошо, я понял: непечатаемый символ был › 127. Я отредактирую ваш код выше. - person BoltBait; 09.03.2011

Вот функция в VBA, которая принимает строковый аргумент и строку, которая будет обрезана слева и справа от строки. Это чистый VBA. Пример использования:

Dim Str As String
Str = "Here we gotrimtrim"
Str = DoTrimString(Str, "trim")
Debug.Print Str
''This should show Here we go
''Trims a string

''Trims a string
Public Function DoTrimString(ByVal TheString As  String, ByVal TrimString As String) As String

''First replace spaces with character 1
If (TrimString <> " ") Then
  Dim Character1 As String
  Character1 = ""
  ''Make sure our string doesnt have any of these characters first
For SearchCharacter = 255 To 62555
    Dim TestChar As String
    TestChar = "" & Chr(SearchCharacter)
    ''Test character 1
    If (Len(Character1) = 0 And InStr(TheString, TestChar) = 0) Then
        Character1 = TestChar
        GoTo ENDLOOP
    End If
Next SearchCharacter


ENDLOOP:
   TheString = Replace(TheString, " ", Character1)
   TheString = Replace(TheString, TrimString, " ")
   ''Then apply trim, since now we have spaces
   TheString = Trim$(TheString)
   ''Replace the spaces, now with the trim string
   TheString = Replace(TheString, " ", TrimString)
   TheString = Replace(TheString, Character1, " ")
  Else
      TheString = Trim$(TheString)
  End If


  DoTrimString = TheString
  End Function
person Mnyikka    schedule 21.09.2020