【问题标题】:Find and Replace Loop in VBA在 VBA 中查找和替换循环
【发布时间】:2021-02-12 04:54:30
【问题描述】:

我有一张包含文本“apple”的公式的表格。我想做以下事情:

  1. 将此工作表中单词 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

【问题讨论】:

    标签: vba loops replace find


    【解决方案1】:

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

    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
    

    【讨论】:

    • 也可以使用二维数组而不是两个单独的数组
    • 嗨 SJR,非常感谢您的回复!这会奏效!如果我想每次将打印(复制和粘贴)偏移一行,即 E13 用于香蕉,E14 用于猫......然后恢复到基本情况没有打印,我将如何处理。跨度>
    • 我的荣幸。你可以使用Worksheets("Results").Range("E13").offset(i).PasteSpecial xlPasteValues
    • 我刚刚尝试了上述方法并创建了一个新的子来恢复基本情况而不打印(即在没有复制和粘贴命令的情况下将狗更改为苹果)-谢谢您的帮助!
    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 2018-10-06
    • 2019-10-23
    • 1970-01-01
    • 2012-03-08
    相关资源
    最近更新 更多