予測していなかったところでイベントが発生して困ることがあります。
例えば、セルの選択が変更される度にイベントが発生し、ワークシートモジュールの
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 をすぐにぬけてくれます。