1

这是我的代码。我正在阅读一张纸并在另一张纸上搜索该术语。如果搜索找到匹配项,它将复制整行并将其粘贴到第一张纸上。搜索、复制和粘贴工作。我没有收到错误,但好像宏没有停止,因为 Excel 不允许我点击宏读取的原始单元格。我是否缺少应该结束宏的代码行?理想情况下,它应该在粘贴后结束宏。

我从另一个线程关闭了代码: 如何将复制的行从一张表粘贴到另一张表

Sub Ref()

Dim rng1 As Range
Dim rng2 As Range

If Range("A11") = "SELECT" Then
    Else
    Set rng1 = Worksheets("MAIN").Range("A11")
    For Each rng2 In Worksheets("REF").Range("A11:A2000")

        If rng1 = rng2(1).Value Then
            rng2.EntireRow.Copy
            rng1.EntireRow.PasteSpecial (xlPasteFormulas)
            Exit For
        End If

    Next rng2
End If
End Sub

这是我调用宏的地方

Private Sub Worksheet_Selection_Change(ByVal Target As Range)
    Call Ref
End Sub

先感谢您

4

1 回答 1

1

您需要阻止粘贴重新触发更改事件:

...
Application.EnableEvents=False
rng1.EntireRow.PasteSpecial (xlPasteFormulas)
Application.EnableEvents=True
...

编辑:您可能应该使用该worksheet_change事件,而不是selection_change. 您可以在那里处理启用的事件:

Private Sub Worksheet_Change(ByVal Target As Range)
    If not application.intersect(me.range("A11"),Target) is nothing then
       Application.EnableEvents=False
       Call Ref
       Application.EnableEvents=True
    End if
End Sub
于 2013-07-09T23:20:46.617 回答