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 に答える