限制粘贴到 Excel 中的下拉单元格

Cha*_*C R 7 microsoft-excel-2007 copy-paste microsoft-excel microsoft-excel-2010

我有一张 Excel 工作表,其中包含许多下拉列。假设一列将 Test1、Test2 和 Test3 作为下拉选项值。此列下的单元格不应接受这三个以外的值。如果我将“XYZ”复制并粘贴到这些单元格中,则不应接受。谁能帮我解决这个问题?

小智 8

设置数据验证

您将需要使用 Excel 中的数据验证功能将单元格限制为特定文本。在您的情况下:“Test1”、“Test2”和“Test3”

  1. 选择应仅接受值“Test1”、“Test2”和“Test3”的单元格

  2. 在“数据”选项卡上的“数据工具”组中,单击“数据验证”按钮。

    Office 功能区中的数据验证位置

  3. 允许:下拉列表中,选择列表

  4. 来源:字段中,输入Test1,Test2,Test3

    数据验证设置

  5. 单击确定应用更改。

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

在此处输入图片说明

如果需要,您可以自定义错误消息文本,方法是单击上面步骤 4 中的错误警报选项卡。

防止复制/粘贴数据验证单元格

这将非常有效,除非有人将内容粘贴到单元格顶部。防止这种情况发生的唯一方法是编写一个宏来检测单元格的更新,确定是否在单元格上启用了数据验证,如果为真则拒绝粘贴。

  1. 选择所有具有数据验证的单元格并将它们命名为DataValidationRange。您可以通过在单元格地址所在的编辑栏左侧键入名称来命名单元格区域。
  2. 在工作表(例如,Sheet1)的代码模块中,添加以下代码:
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 中数据验证的一个问题。希望它有帮助。