删除空格vba Excel

时间:2018-02-05 09:26:14

标签: excel vba excel-vba

我想删除范围内的所有空格,并获得以下代码

Dim rng2 As Range
Dim cleanString2 As String
Set rng2 = ContactData.Range("AR2:AR" & lRow)
rng2.Value = Application.Trim(rng2)
For j = 2 To lRow
    cleanString2 = ContactData.Range("AR" & j).Value
    cleanString2 = Replace(cleanString2, Chr(10), "")
    ContactData.Range("AR" & j).Value = cleanString2
Next j

我得到了具有相同变量的等效代码,只有 变量名中的 2 代码才有效,但其他代码colum A 代替 AR ,有人可以帮我查找错误吗? 的谢谢!

Dim rng As Range
Dim cleanString As String
Set rng = ContactData.Range("A2:A" & lRow)
rng.Value = Application.Trim(rng)
For i = 2 To lRow
    cleanString = ContactData.Range("A" & i).Value
    cleanString = Replace(cleanString, Chr(10), "")
    ContactData.Range("A" & i).Value = cleanString
Next i

这是工作代码,在调试时变量值的图片下方:

Debugging Code

2 个答案:

答案 0 :(得分:2)

您可以逐行替换所有空格,而不是逐行执行。

您发现的问题是您引用了不同的范围 原始代码说明:
Set rng = ContactData.Range("A2:AR" & lRow)

您的代码有:
Set rng = ContactData.Range("A2:A" & lRow) - 错过了AR列的引用。

您可以使用以下代码删除空格(Chr(32)。正如@Rory所说 - Chr(10)是一个换行符。

Sub Test()

    Dim rng As Range
    Dim lRow As Long

    lRow = 15
    Set rng = ContactData.Range("A2:AR" & lRow)

    rng.Replace What:=Chr(32), Replacement:="", LookAt:=xlPart

End Sub

答案 1 :(得分:1)

从您的代码判断,问题在于您希望:

cleanString = Replace(cleanString, Chr(10), "")

将删除空格。 Chr(10)不是ASCII表中的空格。因此,最简单的方法可能是这样:

cleanString = Replace(cleanString, " ", "")

如果这不起作用,请尝试使用此方法:

Public Sub RemoveSpaceInString()    
    Dim myCell As Range            
    For Each myCell In Selection
        myCell = Trim(myCell)
        myCell = Replace(myCell, vbTab, "")
        myCell = Replace(myCell, " ", "")
        myCell = Replace(myCell, Chr(160), "")
    Next myCell    
End Sub

它使用Selection,因为它旨在用于工作代码之外,作为"格式帮助"工具。但是,如果它可以工作,那么在代码中编写它会非常容易。