我想删除范围内的所有空格,并获得以下代码
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
这是工作代码,在调试时变量值的图片下方:
答案 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
,因为它旨在用于工作代码之外,作为"格式帮助"工具。但是,如果它可以工作,那么在代码中编写它会非常容易。