Private Sub WkshtChg (ByVal Target As Range)
Dim VT As Long
'Do all cells in the validation range
'still have validation?
On Error Resume Next
VT=Range ("InputRange").Validation.Type
If Err. Number <>0 ThenApplication. UndoMsgBox "Your last operation was canceled. "&-
"It would have deleted data validation rules. ", vbCritical
End If
End Sub这个事件过程检查应当包含数据有用性验证规则的单元格区域(名为InputRange)内的验证范例。假如VT变量包含一个错误,这意味着InputRange中的一个或多个单元格不再包含数据有用性验证。换言之,工作表的改变大概是由于数据被复制到包含数据有用性验证的单元格区域中引的。假如是这样,那么代码会执行Application 对象的Undo方法,撤消用户的行为。
留意:仅当验证单元格区域的所有单元格包含相同的数据验证范例时,该过程才能正确工作。留意:使用该过程的另一个好处是Undo堆栈不会被销毁。