关于excel:如何退出宏

How to exit Macro

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

我从另一个线程删除了代码:
如何将复制的行从一张纸粘贴到另一张纸

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

这是我称为宏的地方

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

预先感谢您


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

1
2
3
4
5
...
Application.EnableEvents=False
rng1.EntireRow.PasteSpecial (xlPasteFormulas)
Application.EnableEvents=True
...

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

1
2
3
4
5
6
7
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