vba - 删除字符串中的所有空格

标签 vba excel

我创建了一个宏,用于删除字符串中的所有空格,特别是电子邮件地址。然而,它只删除了大约 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. 

这些仅包含常规空白,但会被跳过。

最佳答案

只需使用正则表达式:

'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 Sub

关于vba - 删除字符串中的所有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42306358/

相关文章:

excel - 评估 Office 应用程序状态栏中的进度条

sql - Access - 检查月份和年份是否在日期范围内

VBA:* 什么时候可用?

excel - VBA Excel - 自动换行

Python win32com 工作簿.SaveAs 'Invalid number of parameters.' 错误

excel - 更改日期值并保留格式

excel - 如何包装 IF(ISBLANK( 围绕所有公式

VBA Windows 7 样式按钮

C#、OLEDB从指定行读取Excel文件

excel - 如何使用 VBA 代码从列表中获取唯一的 30 个随机数