因此,我有一个论坛,用户可以输入数据,并且在输入重复值时需要进行2种不同的检查。
现在我还有其他检查,它根据正在处理的列调用模块。因此这些代码将放在单独的模块中(我让调用将row_value传递给模块。
x = row_value
所以我的范围代码看起来像:Range("E" & x).Value
我需要查看的范围来自E7:G307
我需要的第一个代码是查看并查看他们刚刚输入/修改的Range("E" & x).Value
在该E
列中的任何其他单元格中是否已经存在。如果是这样,则显示一条消息,引用重复的行#
因此,如果他们在E10
单元格中输入“左臀部”,它将检查E7:E307
中的所有其他单元格,以查看是否在其他任何E
单元格中使用了“左臀部”,并说E7 = Left Hip
,然后显示一条消息:`“在第7行发现重复项”
我需要的第二个代码是相似的,除了我需要它同时查看2列中是否有重复项。 F&G,如果匹配项显示一条消息,则引用重复的行#
因此,如果他们将“浪费”输入到单元格F10
中并将“水”输入到单元格G10
中,那么它将查看F7:G307
中的所有其他单元格,以查看同一行上的两个单元格是否都匹配。因此,如果F7 = "Wasted"
和G7 = "Trash"
没有匹配项,但如果匹配G7 = "Water"
,则两列都将匹配。然后显示消息"Duplicate found on Line 7"
请注意,在他们输入“ G”列后,我会进行此检查。
不确定您需要什么其他信息,请随时提问并感谢您的帮助。
注意:我尝试使用Range.Find
方法,但无法进行任何操作。我只是不太了解它,我看了一些例子,但又不确定如何使它适应我的需求。
将一系列值传递给数组总是有用的,这样可以更快地处理它们。我认为这是一个有用的开始,可为您指明正确的方向。需要对其进行一些修改,例如您的计数器将从7开始而不是1。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim value As Variant
Dim counter As Long
''Don't need the empty check, but could be updated to make this static if you wanted to
Dim values As Variant
If IsEmpty(values) Then
values = Worksheets("Sheet1").Range("A1:A700")
End If
If Not Intersect(Target, Range("A1:A700")) Is Nothing Then
counter = 1
For Each value In values
If value = Target.value Then
If Target.Row <> counter Then
MsgBox "Duplicate Value on line: " & counter
End If
End If
counter = counter + 1
Next value
End If
End Sub