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。我将编辑上面的代码。