イベントを抑止する
イベントを一時停止してA1を書き換え、終了時に元の状態へ戻します。
実行前に確認
- A1を上書きします。EnableEventsはExcel全体に影響します。途中で強制終了した場合はイミディエイトウィンドウでApplication.EnableEvents = Trueを実行して復旧します。
1サンプルコード
Sub Sample3106()
Dim oldEvents As Boolean, errorText As String
oldEvents = Application.EnableEvents
On Error GoTo Failed
Application.EnableEvents = False
ThisWorkbook.Worksheets("練習").Range("A1").Value = "イベントなしで更新"
Application.EnableEvents = oldEvents
Exit Sub
Failed:
errorText = Err.Description
Application.EnableEvents = oldEvents
MsgBox errorText
End Sub図で見る操作の流れ
イメージ図概念図:A1更新中だけ、Excelのイベントを止めます。
マクロ:状態保存
元のEnableEventsを覚える
マクロ:一時停止
EnableEvents = False
マクロ:更新
練習!A1へ「イベントなしで更新」を書く
マクロ:復元
正常終了時・エラー時とも元のEnableEventsへ戻す
A1は上書きされます。設定はExcel全体へ影響し、強制終了では復元されない場合があります。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する3つの手順で、コードの使い方を確認できます
- 1
練習用のブックをExcelマクロ有効ブック(.xlsm)で保存します。シート名を「練習」に変更します。
- 2
Alt+F11でVBEを開き、[挿入]→[標準モジュール]にコードを貼り付けます。
- 3
Sample3106内にカーソルを置いてF5で実行します。イベントを一時停止してA1を書き換え、終了時に元の状態へ戻します。