2015-04-17 180 views
1

我试图用破折号替换空格(-)。当我经历我的角色时,每当我找到他们之间的空间时,我想用-替换它们。例如,如果我有一个字符串:A B,它应该被转换为A-B。这里是我的代码:如何替换VBA中的空格字符?

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

如果有多个空格,您是否想为每个空格或单个短划线指定短划线? – dan08

+0

试过'Chr(32)'? –

+0

@ dan08字符之间的任何雅所以A B,所以如果我有多个空间,需要更换 - 或者我可能有一个空间像一个B和一个更换 - – user3713336

回答

1

对于替换另一个子一个子,你应该使用功能更换

MsgBox Replace("the string you want to manipulate", " ", "-") 

的“”代表的空间,而“ - ”是你的char替代。

所以,你的代码的最后一行应该是(如果我理解正确的代码):

Worksheets("Sheet1").Range("A" & i) = strReplace(xcell, " ", x) 

好运

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,第二个参数必须是空格。

4

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

  1. Instr(1, xcell, "")正在寻找一个空字符串。尝试Instr(xcell, " ")来检测空格(然后只有第一个空格)。
  2. strReplace("xcell", "", x):你正在寻找的方法是更换(),见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)将用短划线替换所有空格。如果没有空格,什么都不会被替换。