Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 字符串上的空格不是空格_Vba_String_Excel_Space - Fatal编程技术网

Vba 字符串上的空格不是空格

Vba 字符串上的空格不是空格,vba,string,excel,space,Vba,String,Excel,Space,我在Excel中有一个从outlook粘贴的单元格。当我读入它时,它上面有一些空格,我需要删除。 我花了几个小时才找到解决办法把它去掉 我试过: Replace(字符串值,”,“”)并且没有删除空格 应用程序。查找(“,字符串\u值)并返回错误 Application.trim(字符串\u值)并且没有删除空格 我的解决方案: string_value = Replace(Str(string_value), " ", "") 有人知道原因吗?Outlook电子邮件可以以两种方式编写: 1

我在Excel中有一个从outlook粘贴的单元格。当我读入它时,它上面有一些空格,我需要删除。 我花了几个小时才找到解决办法把它去掉

我试过:

  • Replace(字符串值,”,“”)
    并且没有删除空格
  • 应用程序。查找(“,字符串\u值)
    并返回错误
  • Application.trim(字符串\u值)
    并且没有删除空格
我的解决方案:

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

有人知道原因吗?

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

1) 纯文本

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

您可能会遇到第二种情况,因为不能以纯文本模式插入表,当您获得变量
string\u value
的值时,您会得到完整的HTML字符串

事实上,Outlook将您的身体转换为HTML格式,允许您从任何邮件服务器查看身体(HTML是国际web语言,任何浏览器都可以统一或几乎完全阅读)。这意味着,字符空间将不再是
,而是它的HTML等价物,即
(或者其他,我不知道是否有特征线,我不是真正的HTML专家)


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

这是因为该语句:

string_value = Replace(Str(string_value), " ", "")
做几件事。通常str()接受一个长参数。因为您给它一个字符串,VBA(在后台)将该字符串转换为长参数。在这样做时,它会丢弃任何垃圾字符(非数字),如CHR(160)。

str()将结果填充为空白,而Replace()将删除

使用:


Replace(字符串\值,字符(160),“”)

你能告诉我们你的
字符串值的定义吗?
变量的定义吗?我有一个想法,但我需要确认一下。@Ruberduck说得有道理,如果我的想法和他的想法一样,我想你得到的是一个完整的HTML字符串。请参阅我的答案,了解更多关于我认为是怎么回事的详细信息。如果你能告诉我们你是如何分配的,那就太好了变量的值。