【发布时间】:2021-01-12 04:59:24
【问题描述】:
我正在尝试在用户表单中创建 IF/AND 语句,但失败了。我希望能够将相同的姓氏和不同的名字添加到动态列表中,但我当前的代码(如下)将其捕获为重复值。我可以添加一个完全唯一的名字和姓氏,而不会遇到任何问题。
在下面的代码中,我从 TextBox2/Num2 中提取名字,从 TextBox3/Num3 中提取姓氏
例如:
将 John Doe 添加到已包含 Jane Doe 的列表中将被视为姓氏的重复项。
Current State of my worksheet
Dim Num1 As Long
Dim Num2 As Long
Dim Num3 As Long
On Error Resume Next
Num1 = Application.WorksheetFunction.Match(Me.TextBox1.Value, ws.Range("A2:A500000"), 0)
Num2 = Application.WorksheetFunction.Match(Me.TextBox2.Value, ws.Range("B2:B500000"), 0)
Num3 = Application.WorksheetFunction.Match(Me.TextBox3.Value, ws.Range("C2:C500000"), 0)
On Error GoTo 0
If Num1 > 0 Then
MsgBox "Error! Duplicate EID detected", , "Duplicate Detected"
Exit Sub
End If
If Num2 > 0 And Num3 > 0 Then
MsgBox "Error! Duplicate NAME detected", , "Duplicate Detected"
Exit Sub
End If
【问题讨论】:
-
你可以用
WorksheetFunction.CountIfs代替Match。 -
或者你可以写
If Num2 <> 0 And Num3 <> 0 Then -
@ScottHoltzman - 但问题是 num2 和 num3 可能不一样...即
John在一行上匹配,Doe在另一行上匹配。 -
@BigBen - 好点。在那种情况下
If Num2 > 0 And (Num2 = Num3) Then -
@BigBen 这开启了添加完全重复条目的可能性。除非我输入错误。我刚刚用
.CountIfs替换了.Match
标签: excel vba if-statement userform