Trim 函数和 WorksheetFunction.Trim 不会删除前导或尾随空格

dim*_*ris 2 excel vba trim

我从工作表中的网站复制了一些数据,并注意到除了预期值之外的一些单元格还包含一个尾随空格。

由于给我的代码带来麻烦,我想删除这些空格。我发现了一个具有此空间的特定单元格并尝试:

Worksheets(2).Range("D17").Value = Trim(Worksheets(2).Range("D17").Value)
Run Code Online (Sandbox Code Playgroud)
  • 空间还在。

然后我尝试:

Worksheets(2).Range("D17").Value = WorksheetFunction.Trim(Worksheets(2).Range("D17").Value)
Run Code Online (Sandbox Code Playgroud)
  • 仍然没有运气。

Replace函数不仅删除前导和尾随,还删除字符串内的空格:

Worksheets(2).Range("D17").Value = Replace(Worksheets(2).Range("D17").Value," ","")
Run Code Online (Sandbox Code Playgroud)
  • 有些单元格包含两个词,所以这不是一个选项。

我可以检查最后一个字符是否为空格并为每个单元格删除它,但这似乎不是一个优雅的解决方案,主要问题仍然存在:为什么Trim函数不起作用?

dim*_*ris 5

在网上搜索了很长时间后,我发现这里还有另一个空间字符,函数的输出Chr(160)和出于某种原因Trim忽略了它。所以在我的情况下的解决方案是首先替换所有这些“不同”的空格,然后修剪值:

Worksheets(2).Range("D17").Value = Replace(Worksheets(2).Range("D17").Value, Chr(160), " ")
Worksheets(2).Range("D17").Value = Trim(Worksheets(2).Range("D17").Value)
Run Code Online (Sandbox Code Playgroud)

如果您遇到类似问题并遇到与Chr(160)“未知”不同的字符,您可以通过隔离该字符并使用该Asc函数来找出该字符是什么。