在用户填写用户表单时实时搜索重复项,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

我在列表中构建了一个字符串,并找到了所有重复项。然后我将字符串设置为标签标题。