VBA Excel - 替换字符串短语中的确切单词

时间:2015-01-08 17:52:58

标签: string excel vba excel-vba replace

我有一个数组,其中包含一些我想用其他单词替换的单词,事实上,我有一些问题:

例如:

  • Var1 - > wksArray
  • Var2 - > wksArrayBigger
  • string:Dim wksArray,wksArrayBigger as Variant

当我尝试用" test1"替换wksArray时,它会导致:

  • var1 - > teste1
  • var2 - > test1Bigger
  • string:Dim teste1,teste1Bigger as Variant

我该如何解决?

Function FindAndReplace(VBProjToClean, varArray)
Dim i, b As Integer
Dim str, replace_str As String
Dim VBC As VBComponent
    For Each VBC In VBProjToClean.VBComponents
            i = 1
            With VBC.CodeModule
                Do Until i > .CountOfLines
                    If Not .ProcOfLine(i, vbext_pk_Proc) = "VBE_Remove_Comments" Then
                        str = .Lines(i, 1)
                    End If
                    For b = 1 To UBound(varArray)
                        If InStr(1, str, varArray(b), vbTextCompare) > 0 Then
                           replace_str = Replace(str, varArray(b), varArray(b) & "banana")
                           .ReplaceLine i, replace_str
                            str = .Lines(i, 1)
                        End If
                    Next b
                i = i + 1
                Loop
            End With
    Next
End Function

2 个答案:

答案 0 :(得分:0)

虽然不能正确解决您的问题,但如果您无法解决冲突,可以对搜索列表进行排序,并可能添加一些中间替换。

arrReplaceBigger -> arIM01
arrReplace -> aR
arIM01 -> aRB ' 

如果您只是替换变量名称,您可以创建一个替换Replace的函数来执行一些额外的替换,然后为下一个字符添加许多可能性。

white-space, comma, period, left bracket, right bracket, new line, plus, ...., etc

或者不是做多次额外的替换,你可以使用正则表达式做同样的事情,正如大卫建议的那样。

答案 1 :(得分:0)

编写一个函数来确定某个东西是否是VBA变量的有效字符 那么对于每一串琴弦, 查找要替换的字符串的出现,验证前置和后置的positoins是否包含有效字符,如果是,则替换该字符串。