【问题标题】:VBA Excel: Evaluate Data Validation RuleVBA Excel:评估数据验证规则
【发布时间】:2020-09-13 21:53:19
【问题描述】:

我想知道是否有一种干净的方法来评估单元内数据验证。它可以是长度检查或下拉列表等。

我可以使用以下代码轻松添加数据验证规则,验证单元格 A1 中的条目是否超过 5 个字符,但有没有办法从 VBA 内部对其进行评估?

With Cells(1,1).DataBodyRange.Validation
    .Delete
    .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _
         Operator:=xlLess, Formula1:="6"
    .ErrorTitle = "Too Many Characters"
    .ErrorMessage = "The maximum allowed number of characters For this field is 5"
    .ShowError = TRUE
End With

【问题讨论】:

  • 您能解释一下您想要实现的目标吗? “从 VBA 内部评估 [数据验证]”如何体现? DV用于数据输入。如果用户满足 DV 标准,则接受该条目。如果他们不这样做,则无法在单元格中确认该值。你想在那里用 VBA 做什么?它应该怎么做?
  • 或者你想用VBA写你自己的数据验证?在这种情况下,请查看工作表更改事件。
  • 当您设置单元格的验证时,Excel 会为该区域创建一个Validation 对象并设置该对象的属性。反过来,您可以读取现有验证对象的属性,例如 Debug.Print Cell.Validation.Formula1

标签: excel vba validation


【解决方案1】:

如果您不想使用数据验证并希望使用 VBA 重新发明轮子,则可以使用 Worksheet_Change 事件。

让代码评估目标单元格并确定它是否符合您的标准。如果没有,请清除目标单元格并显示一条消息。

这种方法将有效地消除用户使用 Undo 的能力,因为 VBA 将在整个工作表上的每个数据输入后运行,并将清除 Undo 堆栈。如果您希望为最终用户保留可用性,您可能希望继续使用内置的数据验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多