【问题标题】:Space not space on string空格不是字符串上的空格
【发布时间】:2015-03-13 21:45:59
【问题描述】:

我在 Excel 中有一个从 Outlook 粘贴的单元格。当我在 中阅读时,上面有一些空格,我需要删除。 我花了几个小时才找到删除它的解决方案。

我试过了:

  • Replace(string_value," ","") 并没有删除空格
  • Application.find(" ", string_value) 并返回错误
  • Application.trim(string_value) 并没有删除空格 ...

我的解决方案:

string_value = Replace(Str(string_value), " ", "")

有人知道为什么吗?

【问题讨论】:

  • 你能告诉我们你的string_value变量的声明吗?我有一个想法,但我需要确认。
  • @RubberDuck 说得对,如果我的想法和他的想法一样,我想你会得到一个完整的 HTML 字符串。有关我认为正在发生的事情的更多详细信息,请参阅我的答案。如果您能向我们展示如何将值分配给变量,那就太好了。

标签: vba string excel vba space


【解决方案1】:

Outlook 电子邮件可以用两种模式编写:

1) 纯文本;

2) HTML(用于允许颜色、布局等)

您可能属于第二种情况,因为无法以纯文本模式插入表格,并且当您获取变量 string_value 的值时,您将获得完整的 HTML 字符串。

实际上发生的事情是 Outlook 将您的正文转换为 HTML 以允许从任何邮件服务器查看它(HTML 是国际网络语言,任何浏览器都可以统一读取,或者几乎可以读取)。这意味着,字符 space 将不再是 " ",而是它的 HTML 等价物,即 &nbsp(或其他东西,我不知道是否有断线,我'不是真正的 HTML 专家)。

因此,当您使用上述三种方法之一时,它们都无法找到“视觉空间”,或者更好的是字符串字符" "。但是,当您使用函数 Str() 时,HTML 字符串将被重新转换为 VBA 语言(即 &nbsp 或等效项将在 " " 中转换,因此您的方法将起作用。

【讨论】:

    【解决方案2】:

    那是因为声明:

    string_value = Replace(Str(string_value), " ", "")
    

    做几件事。通常 str() 需要一个 Long 参数。因为您给它一个 String, VBA(在后台)将字符串转换为 Long。 在这样做时,它会丢弃任何垃圾字符(非数字),如 CHR (160).

    Str() 用空格填充结果,Replace() 将其删除!

    Str Function on MSDN

    【讨论】:

      【解决方案3】:

      用途:

      Replace(string_value,CHAR(160),"")

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-26
        • 1970-01-01
        • 2013-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-01
        • 2015-01-13
        相关资源
        最近更新 更多