アプリ版:「スタンプのみでお礼する」機能のリリースについて

worksheet_changeを使って、特定のセルの値が変更されたときに、処理をしています。
例えば、セルA1が変更されたときに3万回のセルに値を入力する繰り返し操作をするマクロを書いていると
1回目のセルに入力される操作をしたときにworksheet_changeがおそらく反応しています。
3万回のセルに値を入力する繰り返し操作中だけ、worksheet_changeが起きないようにはできないでしょうか?

A 回答 (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
    • good
    • 1

worksheet_changeの無効化をするくらいであれば、


worksheet_changeイベントで、どのセルに対する操作なのか判断して、
「特定のセル」以外の操作は無視するロジックを組んだ方が楽だと思いますが。

こちらを参照。
http://www.moug.net/tech/exvba/0050131.html
Intersectメソッドを使ってセルの判断を行っています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!