Cha*_*C R 7 microsoft-excel-2007 copy-paste microsoft-excel microsoft-excel-2010
我有一张 Excel 工作表,其中包含许多下拉列。假设一列将 Test1、Test2 和 Test3 作为下拉选项值。此列下的单元格不应接受这三个以外的值。如果我将“XYZ”复制并粘贴到这些单元格中,则不应接受。谁能帮我解决这个问题?
小智 8
您将需要使用 Excel 中的数据验证功能将单元格限制为特定文本。在您的情况下:“Test1”、“Test2”和“Test3”
选择应仅接受值“Test1”、“Test2”和“Test3”的单元格
在“数据”选项卡上的“数据工具”组中,单击“数据验证”按钮。

在允许:下拉列表中,选择列表
在来源:字段中,输入Test1,Test2,Test3

单击确定应用更改。
此时,您在步骤 1 中选择的每个单元格都会有一个与之关联的下拉列表。电子表格的用户将只能输入Test1、Test2或Test3。如果他们尝试输入任何其他内容,他们将收到以下错误消息:

如果需要,您可以自定义错误消息文本,方法是单击上面步骤 4 中的错误警报选项卡。
这将非常有效,除非有人将内容粘贴到单元格顶部。防止这种情况发生的唯一方法是编写一个宏来检测单元格的更新,确定是否在单元格上启用了数据验证,如果为真则拒绝粘贴。
Private Sub Worksheet_Change(ByVal Target As Range)
'验证范围还有验证吗?
如果 HasValidation(Range("DataValidationRange")) 然后
退出子
别的
应用.撤消
MsgBox "错误:您无法将数据粘贴到这些单元格中。" &_
“请改用下拉菜单输入数据。”, vbCritical
万一
结束子
私有函数 HasValidation(r) 作为布尔值
'如果 Range r 中的每个单元格都使用数据验证,则返回 True
出错时继续下一步
x = r.Validation.Type
如果 Err.Number = 0 那么 HasValidation = True 否则 HasValidation = False
结束函数
不幸的是,VBA 是防止有人粘贴单元格的唯一方法。从一开始,这就是 Excel 中数据验证的一个问题。希望它有帮助。