我正在尝试用破折号 (-
) 替换空格。当我浏览我的角色时,每次我发现它们之间有空格时,我都想用 -
替换它们。例如,如果我有一个字符串:A B
,它应该被转换成A-B
。这是我的代码:
Sub prac()
Dim x As String, a As Long, lastrow As Long, i As Long
Dim xcell As String
x = "-"
a = 1
lastrow = Worksheets("Sheet1").UsedRange.Rows.Count + 1
For i = a To lastrow
xcell = Worksheets("Sheet1").Range("A" & i)
If InStr(1, xcell, "") > 0 Then
Worksheets("Sheet1").Range("A" & i) = strReplace("xcell", "", x)
End If
Next i
End Sub
请您参考如下方法:
我在您的代码中看到三个半错误:
- 您的
Instr(1, xcell, "")
正在搜索空字符串。尝试Instr(xcell, "")
检测空格(然后只检测可能的许多空格中的第一个)。 strReplace("xcell", "", x)
:你要找的方法是replace(),见https://msdn.microsoft.com/de-de/library/bt3szac5%28v=vs.90%29.aspx .如果您要编写
replace("xcell", "", x)
(请注意已更正的错误 #1),您将不会查看变量内部xcell
,但在字符串"xcell"
中。去掉引号以解决变量问题。一半的错误是,您不必搜索出现的
""
。命令Worksheets("Sheet1").Range("A"& i) = replace(xcell, "", x)
将用破折号替换所有空格。如果没有空格,则不会替换任何内容。