添加自定义验证检查(VB for applications)

时间:2015-04-17 16:59:53

标签: excel vba

我有相当复杂的验证检查,我想添加到Excel工作表。我更喜欢对这些进行编码,而不是使用Excel的标准验证。

我正在寻找一个基本的VBA验证示例(一种“hello world”),以便我可以从中生成更复杂的验证。为了使事情具体化,让我们说如果我有这张表:

   |     A        |       B        |       c       |
   -------------------------------------------------
1  |Name          |Length          |               |
   -------------------------------------------------
2  |Johnny        |6               |               |
   -------------------------------------------------
3  |Alex          |2               |               |
   -------------------------------------------------

然后我想将“B”列中的单元格标记为无效,如果它与“A”列中字符串的长度不匹配。在上面的示例中,B3单元格应标记为无效,因为其值(2)与“Alex”(4)的长度不匹配。

1 个答案:

答案 0 :(得分:1)

如果您尝试捕获更改单元格值的用户,那么您将使用表单Worksheet_Change事件:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, c As Range, rw As Range

    Set rng = Application.Intersect(Target, Me.Range("A2:B1000"))
    If Not rng Is Nothing Then
        'assuming Target is a contiguous rectangular range
        For Each c In rng.Columns(1)                 
            Debug.Print c.Address()
            Set rw = c.EntireRow
            If rw.Cells(2).Value <> Len(rw.Cells(1).Value) Then
                rw.Cells(2).Interior.Color = vbRed
            Else
                rw.Cells(2).Interior.ColorIndex = xlNone
            End If
        Next c
    End If
End Sub

请注意,如果细胞会因重新计算公式而发生变化,那么您需要使用Worksheet_Calculate事件。