特定のセル値がいつ変更されたかを検出しようとするこの関数があります。問題は、ユーザーがスプレッドシート全体を選択して削除を押した場合、範囲が 1 つのセルのみであるというチェックでオーバーフローが発生することです。
Public Sub Worksheet_Change(ByVal Target As Range)
'Overflow can occur here if range = whole spreadsheet
If Not IsError(Int(Target.Cells.Count)) Then
If Target.Cells.Count = 1 Then
If Target.Cells.Row = 4 And Target.Cells.Column = 1 Then
Sheets("X").Cells(5, 1).Calculate
End If
End If
End If
End Sub
単一の特定のセル値が変更されたときにのみ、このコードを実行できるようにするよりエレガントな方法はありますか? (オーバーフローなし、ワークシート全体をクリアするときの問題など)?