- ベストアンサー
worksheet_changeの無効化
worksheet_changeを使って、特定のセルの値が変更されたときに、処理をしています。 例えば、セルA1が変更されたときに3万回のセルに値を入力する繰り返し操作をするマクロを書いていると 1回目のセルに入力される操作をしたときにworksheet_changeがおそらく反応しています。 3万回のセルに値を入力する繰り返し操作中だけ、worksheet_changeが起きないようにはできないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
考え方その1:自分発の操作には反応を抑制する private sub Worksheet_Change(byval Target as excel.range) dim i msgbox "EVENT RUN" application.enableevents = false for i = 1 to 30000 target.cells(1) = val(target.cells(1)) + 1 next i application.enableevents = true msgbox "EVENT END" end sub 考え方その2:指定のセルからの時だけ処置を行う private sub Worksheet_Change(byval Target as excel.range) dim i msgbox "EVENT ENTER" if target.address <> "$A$1" then exit sub msgbox "EVENT RUN" for i = 1 to 3 range("B1") = i next i end sub
その他の回答 (1)
- denbee
- ベストアンサー率28% (192/671)
worksheet_changeの無効化をするくらいであれば、 worksheet_changeイベントで、どのセルに対する操作なのか判断して、 「特定のセル」以外の操作は無視するロジックを組んだ方が楽だと思いますが。 こちらを参照。 http://www.moug.net/tech/exvba/0050131.html Intersectメソッドを使ってセルの判断を行っています。