首页 > 解决方案 > 在数据通过 VBA 代码移动时触发数据验证

问题描述

我有两张纸:Sheet1Sheet2。表 1 是最终用户输入数据的表格。而 Sheet2 是隐藏的工作表,其中包含使用表单中输入的数据形成的数据表。Sheet 1 有一个 SAVE 按钮,该按钮触发 VBA 代码以将 Sheet 1 表单中的数据保存到 Sheet 2 数据表中。

工作表 2 对数据表的每一列都有多个数据验证规则。当我在表 2 中手动直接在数据表中输入值时,这些数据验证工作正常并被触发(并显示错误消息)。

但是,当我使用此代码将数据从 Sheet1 (Form) 移动到 Sheet2 (Table) 时,不会检查数据验证并粘贴值。当我移至 Sheet2 时,会检查数据验证规则并突出显示不符合验证的单元格。

我想要的是让 excel 在我使用代码将数据从 sheet1 传输到 sheet2 时立即运行这些验证,并显示数据验证失败的错误消息。

如果首先保存的话,我还想将此保存恢复到数据表(即从表中删除该行)。

代码是:

private sub save_data()
    dim objList as ListObject
    dim form as Worksheet
    set objList = ThisWorkbook.Sheets("Sheet 2").ListObjects("Table1")
    set form = ThisWorkbook.Sheets("Sheet 1")
    dim newRow as ListRow
    set newRow = objList.ListRows.Add(AlwaysInsert:=True)
    with newRow.Range
        .Cells(1,1).Value = form.Range("C2").Value
    end with
end sub

我不想使用 vba 创建新的数据验证。我不希望通过 vba 函数创建数据验证规则。我想在 vba 代码运行时运行这些单元格数据验证。有什么办法可以做到这一点?

如果需要,请询问更多详细信息/说明。

标签: excelvbavalidation

解决方案


您是否考虑过使用 Access?它具有您所说的内置功能。您可以创建由用户填写的表单,该表单在后台填充表格。


推荐阅读