Excel 非打印字符的修剪功能

Excel 非打印字符的修剪功能,excel,trim,non-printing-characters,vba,Excel,Trim,Non Printing Characters,Vba,“修剪”功能仅修剪空间。我需要一个功能,修剪所有非打印字符 我的代码 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)

“修剪”功能仅修剪空间。我需要一个功能,修剪所有非打印字符

我的代码

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
…什么也不做。

试试这个:

 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
公共函数trimplete(ByVal sValue作为字符串)作为_
一串
作为字符串的Dim sAns
作为字符串的Dim sWkg
Dim sChar作为字符串
暗淡如长
变暗lCtr尽可能长
sAns=s值
lLen=Len(S值)
如果lLen>0,则
“Ltrim
对于lCtr=1至lLen
sChar=Mid(SAN,lCtr,1)
如果(Asc(sChar)>32)和(Asc(sChar)<127),则退出
下一个
SAN=Mid(SAN,lCtr)
lLen=Len(无)
“Rtrim
如果lLen>0,则
对于lCtr=lLen至1步骤-1
sChar=Mid(SAN,lCtr,1)
如果(Asc(sChar)>32)和(Asc(sChar)<127),则退出
下一个
如果结束
sAns=左$(sAns,lCtr)
如果结束
trimplete=sAns
端函数
取自


这是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
Dim Str作为字符串
Str=“我们看到了trimtrim”
Str=DoTrimString(Str,“trim”)
调试。打印Str
“这应该表明我们走了
“修剪一根绳子
“修剪一根绳子
公共函数DoTrimString(ByVal字符串作为字符串,ByVal TrimString作为字符串)作为字符串
''首先用字符1替换空格
如果(TrimString“”),则
作为字符串的Dim字符1
Character1=“”
''首先确保我们的字符串中没有这些字符
对于SearchCharacter=255到62555
Dim TestChar作为字符串
TestChar=”“&Chr(SearchCharacter)
''测试字符1
如果(Len(Character1)=0,InStr(字符串,TestChar)=0),则
Character1=TestChar
转到结束循环
如果结束
下一个搜索字符
结束循环:
字符串=替换(字符串“”,字符1)
字符串=替换(字符串,TrimString,“”)
''然后应用修剪,因为现在我们有了空间
字符串=修剪$(字符串)
''现在用修剪字符串替换空格
字符串=替换(字符串“”,修剪字符串)
字符串=替换(字符串,字符1,“”)
其他的
字符串=修剪$(字符串)
如果结束
DoTrimString=字符串
端函数

Hmmm。。。信不信由你,它没用!运行脚本后,某些单元格的末尾仍有非打印字符。这会让我发疯的。(是的,每个单元格都在处理中,我将其正确地连接起来。)好的,我算出了:非打印字符>127。我将编辑上面的代码。