在列表框中查找具有特定值的第一条记录

find first record with a specific value in list box

假设我有两个列表框,第一个是:

ID | Name1 | Name2
 1    dcf    jkl

第二个是

ID_1 | Name1 | Addr
 1    abc     add1
 2    dcf     add2
 3    cde     add1
 4    dcf     add2

假设我想查看 "dcf" name1 是否在第二个列表框中。本质上,如果 "dcf" 在任何地方的第二个列表框中,将其设置为活动状态,然后执行此操作,否则,执行其他操作。我熟悉编写 if 语句以及我在其中需要什么,我似乎无法弄清楚的是如何只搜索 "dcf" 在第二个列表框中。

我认为这正是您要找的东西。显然,一旦找到记录和您的命名方案,就需要调整代码以执行您希望它执行的操作,但结构就在那里。

Private Sub ListBox1_AfterUpdate()

    Dim rs       As Recordset
    Dim o        As Object
    Dim blnFound As Boolean

    Set rs = Me.ListBox2.Recordset

    rs.MoveFirst

    Do While Not rs.EOF
        If Nz(rs.Fields(0), "") = Me.ListBox1.Column(0) Then
            blnFound = True
            MsgBox "Found"
        End If
        rs.MoveNext
    Loop

End Sub

或者这样:

Private Sub List0_AfterUpdate()
Dim i As Long
    For i = IIf(List2.ColumnHeads, 1, 0) To List2.ListCount - 1
        If List2.Column(1, i) = List0 Then
            MsgBox "Found"
        End If
    Next
End Sub

请注意,列是从零开始的,因此 Column(1, rowIndex) 是列表数据中的第二列。