我有相当复杂的验证检查,我想添加到Excel工作表。我更喜欢对这些进行编码,而不是使用Excel的标准验证。
我正在寻找一个基本的VBA验证示例(一种“hello world”),以便我可以从中生成更复杂的验证。为了使事情具体化,让我们说如果我有这张表:
| A | B | c |
-------------------------------------------------
1 |Name |Length | |
-------------------------------------------------
2 |Johnny |6 | |
-------------------------------------------------
3 |Alex |2 | |
-------------------------------------------------
然后我想将“B”列中的单元格标记为无效,如果它与“A”列中字符串的长度不匹配。在上面的示例中,B3单元格应标记为无效,因为其值(2)与“Alex”(4)的长度不匹配。
答案 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
事件。