我创建了一个宏,用于删除字符串中的所有空格,特别是电子邮件地址。然而,它只删除了大约95%的空格,只留下了一小部分。
我的代码:
Sub NoSpaces()
Dim w As Range
For Each w In Selection.Cells
w = Replace(w, " ", "")
Next
End Sub我尝试解决这个问题的方法包括:
~使用Code函数确认空格确实是空格,它是字符32 (空格)
~在替换宏中使用了替换宏
~让额外的宏利用Trim函数删除前导空格和尾随空格
~制作了一个单独的宏来测试不间断空格(字符160)
~已使用查找和替换功能搜索和替换空白空间。已确认工作正常。
当我运行宏时,我只选择了一个单元格。由于代码的Selection.Cells部分,它选择并遍历所有单元格。
下面是几个例子:
1 STAR MOVING @ ATT.NET
322 TRUCKING@GMAIL.COM
ALEZZZZ@AOL. COM. 这些只包含常规空格,但会被跳过。
发布于 2017-02-18 04:08:19
只需使用正则表达式:
'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这样叫它:
Sub NoSpaces()
Dim w As Range
For Each w In Selection.Cells
w.Value = RemoveWhiteSpace(w.Value)
Next
End Subhttps://stackoverflow.com/questions/42306358
复制相似问题