- 締切済み
[Excel VBA 2003] Worksheet_Changeでセルの削除・挿入を識別する方法
Excel VBAのWorksheet_Change関数でセルが削除・挿入されたことを識別することはできますか?Worksheet_Change以外でも方法があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- end-u
- ベストアンサー率79% (496/625)
回答No.2
行全体や列全体に対する削除/挿入だったら、最大使用領域の右下セルなど、監視ポイントとするセルを決めて モジュールレベルでRange型変数に記憶させ、Changeイベント後の変化を見ればいいと思います。 ですが、単独セルの削除/挿入に関しても識別したい場合は、判定できません。 単独セルのケースも対応したいなら、使用許可領域を決め、その最右列、最下行のセルに 1 って入れておいて Changeイベント後のSUM値の変化で識別するなど、が考えられます。 でもその場合、削除/挿入でなくても行全体をクリアされたりすると困るので、 シート保護で対応する必要も出てきますね。 ...という事は、最初からシート保護で削除/挿入できなくしておいて、 削除/挿入を実行するマクロを別途作成し、それを右クリックメニューなどに登録しておけば 識別の必要もなくなって簡単じゃないかと思うのですけど。
- nattocurry
- ベストアンサー率31% (587/1853)
回答No.1
ActiveSheet.Cells.SpecialCells(xlLastCell).Address でChange後の最終セルのアドレスを取得して、 Application.Undo でUndoして ActiveSheet.Cells.SpecialCells(xlLastCell).Address でChange前の最終セルのアドレスを取得して、 Change前とChange後の最終セルのアドレスを比較してみては? 検証していないので、うまくいくかどうかは解りません。