当TRIM功能和替换功能都不起作用时,如何在VBA中删除空格?

时间:2018-09-12 03:47:14

标签: vba excel-vba

好的,我知道这是一个相当普遍的问题,但是我已经完成了研究,但找不到答案。

我从网上复制了一张表格并粘贴到Excel工作表中。

然后我继续编写一个宏来处理工作表。

其中一列数字无效。我发现它在数字的前面和后面都包含空格,因此=sum函数无法在其上使用。

所以我写了一个简单的宏来删除空格。

Sub findandreplacespaces()
Dim i As Integer
Dim k As Integer
Dim j As Integer

Dim firstrow As Integer
Dim lastrow As Integer
Dim firstcol As Integer


For i = 1 To 8                             'I've got 8 sheets to process
Worksheets(i).Activate

lastrow = Cells(Rows.Count, 1).End(xlUp).Row     'define lastrow

    Range(Cells(1, 1), Cells(lastrow, 1)).Select
With Selection
    firstrow = .Find(what:="January").Row         'define firstrow
End With

lastcol = Cells(1, Columns.Count).End(xlToLeft).Column    'define lastcolumn

Range(Cells(firstrow, 2), Cells(lastrow, lastcol)).Select
Selection.ClearFormats                                     'clear all the formating

For j = 2 To lastcol
For k = firstrow To lastrow

Cells(k, j).Select                                        'select the cell(1,1)

With Selection
    .Replace what:=" ", replacement:="", lookat:=xlPart
End With


Next k
Next j
Next i

End Sub

我还尝试使用worksheetfunction.TRIM(选择),但不起作用。

我用过selection.numberformat=general /text/ number,不是。

尽管有一个提示,但不起作用的数字都与单元格的左侧对齐。

我怀疑单元格已锁定,因此我将它们解锁,但宏仍然无法正常工作。

关于如何处理此问题的任何建议?

谢谢大家。

1 个答案:

答案 0 :(得分:4)

尝试一下:

x_pred[0]

工作表修剪功能会获得前导和结尾以及额外的内部字符串空间(vba修剪仅会获得前导/结尾)。清除会清除大多数不可打印的字符。在chr(160)上进行替换将删除一种“幻像”空间。