2017-02-17 104 views
-1

是否有VBA任何方式来检查,如果细胞的值满足该小区的数据验证标准是什么?例如在伪代码:Cell.Validation.isValid检查数据验证通过

的情况是:

  • 验证标准是值的命名范围
  • 列表我希望用户能够进入东西这是不是在验证列表
  • 验证列表是动态创建的(我可能只是去检查这是用于构建列表中的数据,但嘿, 验证公式已经续AINS数据,所以我想知道,如果它可以在不回收代码)
  • 使用我希望用户后,检查这已经输入的数据,而不是在他们这样做是
+0

这个问题是*太广*。有许多方法来检查这样的,没有一些代码,你已经尝试/一些东西,不工作,我们将无法给你具体的反应数据。如果你只是想知道某件事情,那么这可能不是你要问的地方。如果你有一个具体的问题,这是一个[最小,完整,可验证的示例](https://stackoverflow.com/help/mcve),那么我们就可以回答这个问题。 – CallumDA

+0

没有看到更具体的例子中,我们不能提供实现这个的一个非常有效的方法。我最好的建议,但将考虑通过加载您的命名范围到一个数组,然后通过它循环检查,对数值数组输入的值。虽然不是最有效的方法,但仍应该能够在几秒钟内运行(如果不是微秒)。 –

回答

1

此代码是可能充满了漏洞,但我发现这对我有用。

enter image description here

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim rRange As Range 

    If Target.Cells.Count = 1 Then 
     If Not (IsEmpty(Target.Validation.Formula1)) Then 
      Set rRange = ThisWorkbook.Names(Replace(Target.Validation.Formula1, "=", "")).RefersToRange 
      MsgBox "Is In Range:=" & Not rRange.Find(Target.Value, rRange.Cells(1), xlValues, xlWhole) Is Nothing 
     End If 
    End If 

End Sub 
+0

不错的主意,谢谢 – Absinthe