在 VBA 中查找和替换循环

Find and Replace Loop in VBA

我有一个 sheet,其中的公式包含文本“apple”。我想执行以下操作:

  1. 将此 sheet 中的每个单词 apple 替换为“banana”
  2. 打印结果(简单的复制和粘贴)
  3. 用“猫”替换香蕉
  4. 打印结果(简单的复制和粘贴)
  5. 将“猫”替换为“狗”
  6. 打印结果(简单的复制和粘贴)
  7. 最后以恢复基本案例结束,即用苹果替换“狗”

我已经完成了第一次迭代(见下文),只是需要有关如何实现循环的帮助。

提前致谢!!

Sub FindReplaceAll()

Dim sht As Worksheet
Dim fnd As Variant
Dim rplc As Variant

fnd = "apple"
rplc = "banana"

'Store a specfic sheet to a variable
  Set sht = Sheets("Trace")

'Perform the Find/Replace All
  sht.Cells.Replace what:=fnd, Replacement:=rplc, _
    LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
    SearchFormat:=False, ReplaceFormat:=False
    
Range("ResFinal").Copy
    Worksheets("Results").Activate
    Range("E13").PasteSpecial xlPasteValues
   
End Sub

您可以将项目放入两个数组中并循环遍历它们,即

Sub FindReplaceAll()

Dim sht As Worksheet
Dim fnd As Variant
Dim rplc As Variant
Dim i As Long

fnd = Array("apple", "banana", "cats", "dogs")
rplc = Array("banana", "cats", "dogs", "apple")

'Store a specfic sheet to a variable
Set sht = Sheets("Trace")

'Perform the Find/Replace All
For i = LBound(fnd) To UBound(fnd)
    sht.Cells.Replace what:=fnd(i), Replacement:=rplc(i), _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
        SearchFormat:=False, ReplaceFormat:=False
    Range("ResFinal").Copy
    Worksheets("Results").Range("E13").PasteSpecial xlPasteValues
Next i

End Sub