【问题标题】:Searching duplicates in real time while user is filling a UserForm, VBA Excel在用户填写用户表单、VBA Excel 时实时搜索重复项
【发布时间】:2022-01-18 10:59:09
【问题描述】:

我遇到了一个问题。我实际上是在使用它来检查我的表中是否存在重复项:

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"

此代码在单击按钮时执行。

我想知道是否有一种方法可以实时检查我的表格中是否存在重复项,而用户正在键入而不是等待他单击按钮,正如我们在某些 Web 表单上看到的那样。我尝试在 Me.txtCompanyName 上使用 AfterUpdate,但它不是真正的实时。

感谢您的回答,我们将不胜感激。

问候。

【问题讨论】:

  • KeyUp event 可能是您想听的。
  • 哦,我不知道这个活动,谢谢:D。如果我很难使用它,可以麻烦您吗?

标签: excel vba database duplicates real-time


【解决方案1】:

正如 ashleedawg 在 cmets 中所说,我使用 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    相关资源
    最近更新 更多