予測していなかったところでイベントが発生して困ることがあります。

例えば、セルの選択が変更される度にイベントが発生し、ワークシートモジュールの
Worksheet_SelectionChange というプロシージャが実行されてしまいますね。

他のマクロからセルを選択する度に、このプロシージャが動いてしまいます。

そこで、このプロシージャ内の一行目に、ある変数がTrueだったら、すぐにマクロをぬけるように書いておきます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    'フラグ用の変数がTrueの時は、すぐにプロシージャをぬける
    If blnFlag = True Then Exit Sub
    
    MsgBox "セルが変更される度にメッセージボックスが表示される", vbInformation

End Sub


標準モジュールでは、Boolean型の Public変数、blnFlag を定義しています。(変数名は自由に)

下の TEST1プロシージャは、セル範囲をコピーしてペーストしているだけです。はじめに変数にTrueにし、最後にFalseに戻しています。

Public blnFlag As Boolean

Sub TEST1()

    'フラグ用の変数を作りTrueにしておく
    blnFlag = True

    'コピーしてペーストするだけ
    Range("D5:G5").Select
    Selection.Copy
    Range("D10").Select
    ActiveSheet.Paste

    'フラグ用の変数を作りFalseに戻す
    blnFlag = False

End Sub

これで、 TEST1プロシージャ内で、セルを選択しても、Worksheet_SelectionChang をすぐにぬけてくれます。