目录
示例
如图所示,在该表中设置了数据有效性,并进行了工作表保护。希望通过该设置允许用户仅输入规定的内容。然而当用户从其他表格复制并粘贴至已经设置数据有效性的区域时,数据有效性并不起作用。如何利用VBA避免这种情况的发生,以完善数据有效性?
实现代码
当单元格的值改变之后,无论是粘贴还是将数值写入单元格,都会触发工作表对象的Change事件。在该Change事件中编写程序,执行数据有效性对象(Validation)的Value属性,判断单元格的值是否满足有效性验证。若验证失败,则执行Application的Undo方法取消赋值操作。
Private Sub Worksheet_Change(ByVal Target As Range)
'禁用事件,防止不断触发事件
Application.EnableEvents = False
'判断改变的单元格的值是否通过有效性验证
If Target.Validation.Value = False Then
'若没有通过,则取消之前的赋值操作
Application.Undo
End If
'启用事件
Application.EnableEvents = True
End Sub