删除字符串中的所有空格

Pat*_*her 7 excel vba excel-vba

我创建了一个宏来删除字符串中的所有空格,特别是电子邮件地址.然而,它只删除了大约95%的空白,并留下了一些空白.

我的代码:

Sub NoSpaces()
    Dim w As Range

    For Each w In Selection.Cells
        w = Replace(w, " ", "")
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)

我试图解决这个问题的事情包括:

〜使用Code函数确认空格确实是空格,它是字符32(空格)
〜使用替换宏与替换宏结合使用
〜有额外的宏利用Trim函数删除前导和尾随空格
〜制作一个单独的宏来测试对于不间断的空格(字符160)
〜使用"查找和替换"功能来搜索和替换空格.确认工作.

我运行宏时只选择了一个单元格.由于Selection.Cells部分代码,它选择并遍历所有单元格.

几个例子:

1 STAR MOVING @ ATT.NET
322 TRUCKING@GMAIL.COM
ALEZZZZ@AOL. COM. 
Run Code Online (Sandbox Code Playgroud)

这些只包含常规空格,但会被跳过.

use*_*820 6

尝试这个:

Sub NoSpaces()
Selection.Replace " ", ""
End Sub
Run Code Online (Sandbox Code Playgroud)


Com*_*ern 5

只需使用正则表达式:

'Add a reference to Microsoft VBScript Regular Expressions 5.5
Public Function RemoveWhiteSpace(target As String) As String
    With New RegExp
        .Pattern = "\s"
        .MultiLine = True
        .Global = True
        RemoveWhiteSpace = .Replace(target, vbNullString)
    End With
End Function
Run Code Online (Sandbox Code Playgroud)

像这样调用它:

Sub NoSpaces()
    Dim w As Range

    For Each w In Selection.Cells
        w.Value = RemoveWhiteSpace(w.Value)
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)