在数据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代码的最后一种方式。