[英]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.