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

时间:2019-03-31 22:14:40

标签: excel vba trim

我遇到了这个意想不到的问题,并在几个小时后设法找到解决方案,因此我将其发布以节省其他人的时间。


我从工作表中的网站复制了一些数据,但我意外地注意到,除了期望值以外,某些单元格还包含尾随空格。由于要对我的代码造成麻烦,我想删除这些空格。我发现一个具有此空间的特定单元格并尝试:

Worksheets(2).Range("D17").Value = Trim(Worksheets(2).Range("D17").Value)

但是空间仍然存在。然后我尝试了:

Worksheets(2).Range("D17").Value = WorksheetFunction.Trim(Worksheets(2).Range("D17").Value)

仍然没有运气。 Replace函数不仅删除开头和结尾,而且删除字符串内的空格:

Worksheets(2).Range("D17").Value = Replace(Worksheets(2).Range("D17").Value," ","")

在这种情况下,某些单元格包含两个单词,所以这不是一个选择。

我知道我可以检查最后一个字符是否为空格并在每个单元格中将其删除,但这似乎不是一个很好的解决方案,主要的主要问题仍然是:为什么Trim函数不起作用? / p>

1 个答案:

答案 0 :(得分:2)

花了很长时间在网上搜索后,我发现here还有一个空格字符,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)

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