繁体   English   中英

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

[英]VBA Excel - Replacing exact word in a String Phrase

我有一些单词要替换为其他单词的数组,实际上,我遇到了一些问题:

例如:

  • Var1-> wksArray
  • Var2-> wksArrayBigger
  • 字符串:Dim wksArray,wksArrayBigger作为Variant

当我尝试将wksArray替换为“ test1”时,它将导致:

  • var1-> teste1
  • var2-> test1Bigger
  • 字符串: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

虽然不是解决问题的适当方法,但是您可以对搜索列表进行排序,并在无法解决冲突时添加一些中间替代品。

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

如果您只是替换变量名,则可以创建一个Replace函数,该函数将执行许多额外的替换操作,但是会为下一个字符添加很多可能性。

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

或者,您可以像大卫建议的那样使用正则表达式来做相同的事情,而不是进行许多额外的替换。

编写一个函数,以查找某物对于VBA变量是否有效,然后对于每个字符串,查找要替换的字符串的出现,验证前面和后面的positoins不包含有效字符,如果是,替换字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM