Option Explicit
Private iDataRangeRows As Integer
Private iDataRangeColumns As Integer
Private Const sMsg = " Caught you ! You can't insert/delete Rows in this table"
Private Sub Worksheet_Calculate()
On Error Resume Next
With Application
If Range("MyDataRange").Rows.Count <> iDataRangeRows _
And iDataRangeRows <> 0 Then
.EnableEvents = False
Application.Undo
MsgBox sMsg, vbCritical
.EnableEvents = True
End If
If Range("MyDataRange").Columns.Count <> iDataRangeColumns And _
iDataRangeColumns <> 0 Then
.EnableEvents = False
Application.Undo
MsgBox sMsg, vbCritical
.EnableEvents = True
End If
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
iDataRangeRows = Range("MyDataRange").Rows.Count
iDataRangeColumns = Range("MyDataRange").Columns.Count
End Sub