如何替换VBA中的空格字符?

时间:2015-04-17 14:25:40

标签: vba

我正在尝试用破折号(-)替换空格。当我浏览我的角色时,每当我找到它们之间的空格时,我想用-替换它们。例如,如果我有一个字符串: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

3 个答案:

答案 0 :(得分:4)

我在你的代码中看到了三个半错误:

  1. 您的Instr(1, xcell, "")正在搜索空字符串。尝试Instr(xcell, " ")来检测空格(然后只检测空间中的第一个空格)。
  2. strReplace("xcell", "", x):您要查找的方法是replace(),请参阅https://msdn.microsoft.com/de-de/library/bt3szac5%28v=vs.90%29.aspx
  3. 如果您要写replace("xcell", " ", x)(请注意已经更正的错误#1),您不会查看变量xcell内部,而是查看字符串"xcell"内部。不要使用引号来处理变量。

  4. 半错误是,您不必搜索" "的出现次数。命令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,第二个参数必须是空格。