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