簡體   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