在用户填写用户表单时实时搜索重复项,VBA Excel
Searching duplicates in real time while user is filling a UserForm, VBA Excel
我遇到了问题。我实际上是在用它来检查我的 table 中是否存在重复项:
If Not IsError(Application.Match(Me.txtCompanyName.Value, ws.ListObjects("Companies").ListColumns("company_name").Range, 0)) Then
MsgBox "A company is already registered with this name"
此代码在单击按钮时执行。
我想知道是否有一种方法可以在用户输入时实时检查我的 table 中是否存在重复项,而不是像我们在某些 Web 表单上看到的那样等待他单击按钮。我尝试在 Me.txtCompanyName
上使用 AfterUpdate,但它不是实时的。
感谢您的回答,我们将不胜感激。
此致。
正如 ashleedawg 在评论中所说,我使用 KeyUp
事件来弄清楚。
如果对其他人有用,这是我的问题的答案。
Private Sub myText_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim srch As String
Dim str As String
Dim ws As Worksheet
Set ws = Worksheets("myWorksheet")
iRow = ws.Range("B1", ws.Range("B1").End(xlDown)).Rows.Count
If Me.txtRaisonSociale.Value <> "" Then
For i = 2 To iRow
srch = ws.Range("B" & i).Value
If InStr(srch, Trim(ModuleFonctions.setRegexRS(Me.myText.Value))) > 0 Then
str = str + srch + Chr(13) & Chr(10)
End If
Next i
Me.lblInfo.Caption = "Duplicate(s) found :" & Chr(13) & Chr(10) & str
Else
Me.lblInfo.Caption = ""
End If
End Sub
我在列表中构建了一个字符串,并找到了所有重复项。然后我将字符串设置为标签标题。
我遇到了问题。我实际上是在用它来检查我的 table 中是否存在重复项:
If Not IsError(Application.Match(Me.txtCompanyName.Value, ws.ListObjects("Companies").ListColumns("company_name").Range, 0)) Then
MsgBox "A company is already registered with this name"
此代码在单击按钮时执行。
我想知道是否有一种方法可以在用户输入时实时检查我的 table 中是否存在重复项,而不是像我们在某些 Web 表单上看到的那样等待他单击按钮。我尝试在 Me.txtCompanyName
上使用 AfterUpdate,但它不是实时的。
感谢您的回答,我们将不胜感激。
此致。
正如 ashleedawg 在评论中所说,我使用 KeyUp
事件来弄清楚。
如果对其他人有用,这是我的问题的答案。
Private Sub myText_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim srch As String
Dim str As String
Dim ws As Worksheet
Set ws = Worksheets("myWorksheet")
iRow = ws.Range("B1", ws.Range("B1").End(xlDown)).Rows.Count
If Me.txtRaisonSociale.Value <> "" Then
For i = 2 To iRow
srch = ws.Range("B" & i).Value
If InStr(srch, Trim(ModuleFonctions.setRegexRS(Me.myText.Value))) > 0 Then
str = str + srch + Chr(13) & Chr(10)
End If
Next i
Me.lblInfo.Caption = "Duplicate(s) found :" & Chr(13) & Chr(10) & str
Else
Me.lblInfo.Caption = ""
End If
End Sub
我在列表中构建了一个字符串,并找到了所有重复项。然后我将字符串设置为标签标题。