在VBA中debugging空白

我在表格中有一个单元格,内容如下:

64123其中有一些空白空间之后的某种forms。我以为这是一个空白,所以在我的VBA代码,我已经尝试了多种方式获得这个空白空间的string,但既不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语法是什么?

运行这个,它会告诉你所有的string的ascii值

 Sub tellMeWhatCharValues(h As String) Dim i For i = 1 To Len(h) MsgBox Asc(Mid(h, i, 1)) Next i End Sub 

只是第七个字符

 Sub tellMeWhatCharValues(h As String) Dim i MsgBox Asc(Mid(h, 7, 1)) End Sub 

给Sorceri的答案补充一点:

太空人物的一些变化,可以使事情更复杂,如薄空间 , 零宽度空间 , 不间断空间 , 等等 。

Trim不会抓住所有这些(也许不应该删除一个受保护的空间,#160)。
其中一些是unicode字符,可以用Asc返回一个问号(ascii code 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 

查找时遇到困难的空白常常是CHAR(160) ,请参阅删除整列数据中的前导或尾随空格

在你的情况下,你可以用代码删除它们

 ActiveSheet.UsedRange.Replace Chr(160), vbNullString