检查一个范围是不是整个表?

我有这个function试图检测特定单元格值何时更改。 问题是,如果用户select整个电子表格并按删除,我在我的检查溢出,范围是只有一个单元格:

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 

有一个更优雅的方式,我可以得到这个代码只运行,当一个特定的单元格值更改? (没有溢出,当我清除整个工作表等问题)?

我假设你使用的是Excel 2007+,因为在这些版本中,行数和列数都大大增加了。 你可能有更好的运气检查,以确保行和列计数= 1,因为这些最大值将远低于两者的产品(即细胞计数):

 If Target.Rows.Count = 1 And Target.Columns.Count = 1 Then 

使用CountLarge而不是Count

 Private Sub Worksheet_SelectionChange(ByVal target As Range) If target.Cells.CountLarge > 1 Then Exit Sub 'Code... End Sub 

请参阅: MSDN Range.CountLarge属性(Excel)