空间不是字符串上的空格

时间:2015-01-15 13:24:34

标签: string excel vba space

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

我试过了:

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

我的解决方案:

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

有谁知道为什么?

3 个答案:

答案 0 :(得分:1)

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

1)纯文字;

2)HTML(允许颜色,布局等)

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

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

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

答案 1 :(得分:0)

那是因为声明:

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

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

Str()用空白填充结果, Replace()删除!

Str Function on MSDN

答案 2 :(得分:-1)

使用:

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