我在表格中有一个单元格,内容为:
64123
3之后有一些空白区域。我认为这是一个空白区域,所以在我的vba代码中,我尝试了多种方法来获取字符串中的空白区域,但application.trim
和replace
都不起作用。
With Cells(c.Row, 16)
.NumberFormat = "General"
v = Application.Trim(.Text)
v = Replace(v, " ", "")
Debug.Print v
.Clear
.NumberFormat = "General"
.Value = Application.Trim(v)
End With
最后肯定有一个空白区域 - 当我在Excel中突出显示单元格时,我可以看到它,并且Application.Trim
始终为我工作。除了空白之外,还有什么可以做的呢?如果它是制表符或回车符,那么replace
语法是什么?
答案 0 :(得分:4)
运行它,它会告诉你字符串的所有ascii值
Sub tellMeWhatCharValues(h As String)
Dim i
For i = 1 To Len(h)
MsgBox Asc(Mid(h, i, 1))
Next i
End Sub
仅适用于第7个字符
Sub tellMeWhatCharValues(h As String)
Dim i
MsgBox Asc(Mid(h, 7, 1))
End Sub
答案 1 :(得分:4)
为Sorceri的回答添加一些要点:
space 字符的几种变体可能会使事情变得更复杂,例如Thin Space,Zero Width Space,Non-breaking Space,and more
Trim
无法捕获所有这些内容(并且可能不应删除受保护的空间,#160)。
其中一些是unicode字符,可能会返回Asc
的问号(ascii代码63)。
AscW
/ ChrW
可用于unicode字符(也可用于ascii字符)。
试试这个:
Public Sub test()
Dim s As String
s = "12345z" & Chr(160) & "x"
Analyze s
Debug.Print "---------"
s = "12345z" & ChrW(8239) & "x" ' #8239 = narrow no-break space
Analyze s
End Sub
Public Sub Analyze(s)
Dim c As String
Dim i As Integer
For i = 1 To Len(s)
c = Mid(s, i, 1)
Debug.Print c & " => " & AscW(c)
Next
End Sub
答案 2 :(得分:2)
您发现的空格通常为CHAR(160)
,请参阅Remove leading or trailing spaces in an entire column of data
在您的情况下,您可以使用
代码删除它们ActiveSheet.UsedRange.Replace Chr(160), vbNullString