[英]VBA Excel - Replacing exact word in a String Phrase
我有一些单词要替换为其他单词的数组,实际上,我遇到了一些问题:
例如:
当我尝试将wksArray替换为“ test1”时,它将导致:
我该如何解决?
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.