VBA删除字符串中的空格

时间:2018-01-10 10:55:23

标签: excel vba excel-vba search replace

我希望能够删除一组单元格中的所有空格,以便单元格内容只是一个我想要的信息字符串。我已经提出了一个代码,但它没有工作,我无法弄清楚是否必须使用替换功能

我的代码是:

Sub Tester()

Dim SearchString As String
Dim cell As Range
Dim LastRowSource As Long
Dim ws1 As Worksheet

Set ws1 = ActiveWorkbook.ActiveSheet

SearchString = " " 'look for strings containing ( )

With ws1

    LastRowSource = .Cells.Find(" ", [B2], , , xlByRows, xlPrevious).Row

    For Each cell In .Range("B2:B" & LastRowSource)

            If InStr(cell.Value, SearchString) > 0 Then
                cell.Value = Replace(" ", "")
         End If
    Next cell
End Sub

3 个答案:

答案 0 :(得分:1)

如果需要以编程方式执行此操作,则使用“替换”对话框录制宏将生成以下代码:

Sub Macro1()
    Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

将您的范围替换为Selection。您不需要迭代每个单元格。

答案 1 :(得分:1)

你不需要循环:

With ws1
    .Range("B2", .Cells(.rows.count, "B").End(xlUp)).Replace " ", vbnullstring, xlpart
End With

答案 2 :(得分:0)

试试这样:

LastRowSource = 10000. 如果它工作,那么问题是你设置最后一行的方式。因此,将LastRow()函数添加到您的代码中,它应该可以工作:

LastRowSource = LastRow ws1

Function LastRow(sh As Worksheet)
    On Error Resume Next
    LastRow = sh.Cells.Find(What:="*", _
                            After:=sh.Range("A1"), _
                            Lookat:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False).Row
    On Error GoTo 0
End Function

此处的功能 - https://www.rondebruin.nl/win/s9/win005.htm