我正在尝试用破折号(-
)替换空格。当我浏览我的角色时,每当我找到它们之间的空格时,我想用-
替换它们。例如,如果我有一个字符串: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
答案 0 :(得分:4)
我在你的代码中看到了三个半错误:
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)
将用破折号替换所有空格。如果没有空格,则不会有任何替换。
答案 1 :(得分:2)
要使用另一个子字符串替换子字符串,您应该使用函数替换
MsgBox Replace("the string you want to manipulate", " ", "-")
“”代表空间,“ - ”是你的替代品。
所以你的最后一行代码应该是(如果我理解你的代码):
Worksheets("Sheet1").Range("A" & i) = strReplace(xcell, " ", x)
祝你好运
答案 2 :(得分:0)
您只需要修复“替换”功能
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) = Replace(xcell, " ", x)
End If
Next i
End Sub
功能名称错误。您还使用字符串“xcell”而不是变量xcell,第二个参数必须是空格。