dポイントプレゼントキャンペーン実施中!

Excel VBAのWorksheet_Change関数でセルが削除・挿入されたことを識別することはできますか?Worksheet_Change以外でも方法があれば教えてください。

A 回答 (2件)

行全体や列全体に対する削除/挿入だったら、最大使用領域の右下セルなど、監視ポイントとするセルを決めて


モジュールレベルでRange型変数に記憶させ、Changeイベント後の変化を見ればいいと思います。
ですが、単独セルの削除/挿入に関しても識別したい場合は、判定できません。

単独セルのケースも対応したいなら、使用許可領域を決め、その最右列、最下行のセルに 1 って入れておいて
Changeイベント後のSUM値の変化で識別するなど、が考えられます。
でもその場合、削除/挿入でなくても行全体をクリアされたりすると困るので、
シート保護で対応する必要も出てきますね。

...という事は、最初からシート保護で削除/挿入できなくしておいて、
削除/挿入を実行するマクロを別途作成し、それを右クリックメニューなどに登録しておけば
識別の必要もなくなって簡単じゃないかと思うのですけど。
    • good
    • 0

ActiveSheet.Cells.SpecialCells(xlLastCell).Address


でChange後の最終セルのアドレスを取得して、
Application.Undo
でUndoして
ActiveSheet.Cells.SpecialCells(xlLastCell).Address
でChange前の最終セルのアドレスを取得して、
Change前とChange後の最終セルのアドレスを比較してみては?

検証していないので、うまくいくかどうかは解りません。
    • good
    • 0

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