[英]Data Validation pointing to source cell
我在 A 列中使用了数据验证,如果输入重复数据,则会出现错误消息。 它只是显示错误,但没有告诉我数据在列中的位置。
我想知道的是 Excel 是否可以导航到源单元格,在其中比较重复值?
如果单元格 A2 = 12345 并且我尝试更新 A50 = 12345,Excel 会生成一条错误消息,但是否可以将光标指向单元格 A2,因为这是比较数据所在的位置?
我有同样的任务进出。 我的解决方案是有
WorkSheet_Change()
事件触发了我想要的列的重复检查例子:
我已经提取了其中一个的重要部分......
让我们从DupeCheck()
开始……它正在运行一个范围 ( DataRange
) 并返回与要测试的Target
具有相同值的第一个单元格。 该函数驻留在它自己的模块中。 像这样,它可以被同一工作簿中的多个工作表使用。
Function DupeCheck(Target As Range, DataRange As Range) As Range
Dim DataCell As Range
Set DupeCheck = Nothing
' compare each cell of DataRange with Target
For Each DataCell In DataRange.Cells
' exclude Target which may be part of DataRange per se
If Intersect(DataCell, Target) Is Nothing Then
If DataCell = Target Then
' duplicate found ... terminate on first find
Set DupeCheck = DataCell
Exit For
End If
End If
Next DataCell
End Function
现在让我们看看Worksheet_Change
事件,它驻留在它所作用的Worksheet_Change
的代码区域中。 在我的情况下,我有很多验证,但我减少了示例以仅包含相关代码......在这里我们检查单元格更改是否适用于列 A,在这种情况下,我们触发DupeCheck()
函数,并根据返回, 在名为 [ErrorMessage] 的工作表上的单元格中设置或清除错误消息……当然,我们也可以将光标定位到重复的单元格中(例如TempR.Select
... 喜好问题)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TempR As Range
' various validations
' always break on first error found
' output to named range ErrorMessage
' Dupe Check for PoP ID (column A)
If Target.Column = 1 Then
Set TempR = DupeCheck(Target, Range("A1:A50"))
If Not TempR Is Nothing Then
[ErrorMessage] = "Duplicate ID in " & TempR.AddressLocal
Else
[ErrorMessage] = ""
End If
' ElseIf Target.Column = 4 Then ' other validations (deleted)
' ....
End If
End Sub
等瞧
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.