我有一个数组,其中包含一些我想用其他单词替换的单词,事实上,我有一些问题:
例如:
当我尝试用" test1"替换wksArray时,它会导致:
我该如何解决?
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
答案 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是否包含有效字符,如果是,则替换该字符串。