在数据validation单元上复制粘贴,它不起作用

我为一些单元格设置了带有下拉菜单的Excel工作表。 用户只能从该列表中select值,并在input的内容不在列表中时popup错误消息(通过数据validation

错误警报)。

所以这工作都很好…但是当用户复制粘贴到单元格,然后validation不起作用。 在复制粘贴的情况下如何使validation有效。 我已经search并find了一个解决scheme,但它不工作。 这是我find的代码。 但它不再工作..它总是回到真正的我复制粘贴worng

私人小组Worksheet_Change(BYVAL目标作为范围)

   如果HasValidation(Range(ActiveCell.Address))那么
        退出小组
    其他
         Application.Undo
         MsgBox“您的上次操作已取消”。  &_
         “这将删除数据validation规则。”,vbCritical

    万一
结束小组

私有函数HasValidation(r)作为布尔值
    在错误恢复下一步
     x = r.Validation.Type
    如果Err.Number = 0那么HasValidation = True否则HasValidation = False
结束function

它看起来像你从这个页面的代码:

http://www.j-walk.com/ss/excel/tips/tip98.htm

当Worksheet_Change触发时,您的代码始终引用活动单元格,而不是执行复制/粘贴操作的目标。

更改

ActiveCell.Address 

 Target.Address 

看看是否有效。

@JimmyPena提到的“Target.Address”为我工作。 但是这个解决scheme仍然带来了一个bug,即如果在添加上面提到的VB代码之后尝试添加另一个validation,那么用户将被应用于单元数量的vb代码生成的消息框数量激发。您必须单击VB代码提供的消息框的“确定”,以查看已应用VB代码的单元格的数量。如果将代码应用于40个单元格,则必须单击“确定”(OK)40次。 。唷..)你可以请尝试帮助添加另一个条件来帮助吗? 或者是在添加所有validation之后仍然只添加VB代码的最后一种方式。