Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If HasValidation(Range("ValR11")) And HasValidation(Range("ValR22")) Then
Exit Sub
Else
Application.EnableEvents = False
Application.Undo
MsgBox "Your last operation was cancelled." & _
"It would have deleted data validation rules.", vbCritical
End If
Application.EnableEvents = True
End Sub
Private Function HasValidation(r) As Boolean
' Returns True if every cell in Range r uses Data Validation
On Error Resume Next
x = r.Validation.Type
If Err.Number = 0 Then HasValidation = True Else HasValidation = False
End Function