Есть несколько способов сделать это, например:
Function CheckForItem(strItem, ListB As ListBox) As Boolean
Dim rs As DAO.Recordset
Dim db As Database
Dim tdf As TableDef
Set db = CurrentDb
CheckForItem = False
Select Case ListB.RowSourceType
Case "Value List"
CheckForItem = InStr(ListB.RowSource, strItem) > 0
Case "Table/Query"
Set rs = db.OpenRecordset(ListB.RowSource)
For i = 0 To rs.Fields.Count - 1
strList = strList & " & "","" & " & rs.Fields(i).Name
Next
rs.FindFirst "Instr(" & Mid(strList, 10) & ",'" & strItem & "')>0"
If Not rs.EOF Then CheckForItem = True
Case "Field List"
Set tdf = db.TableDefs(ListB.RowSource)
For Each itm In tdf.Fields
If itm.Name = strItem Then CheckForItem = True
Next
End Select
End Function
От: http://wiki.lessthandot.com/index.php/Listbox:_Does_an_Item_Exist
Тем не менее, я подозреваю, что вы, возможно, подходите к проблеме с неправильной стороны, множественные скрытые элементы управления редко бывают хорошей идеей, и может быть лучше объяснить ваши потребности более полно.
РЕДАКТИРОВАТЬ Комментарий
Этот пример не быстрый, но довольно простой.
Sub SearchTables(strFind As String)
''Reference: Microsoft DAO x.x Object Library
Dim db As Database
Dim tdf As TableDef
Dim fld As DAO.Field
Dim rs As DAO.Recordset
Dim strSQL As String
Dim strMessage As String
Set db = CurrentDb
For Each tdf In db.TableDefs
strFieldList = ""
For Each fld In tdf.Fields
strFieldList = strFieldList & " & [" & fld.Name & "]"
Next
strSQL = "SELECT * FROM [" & tdf.Name & "] " _
& "WHERE Instr(" & Mid(strFieldList, 4) & ",'" & strFind & "') > 0"
Set rs = CurrentDb.OpenRecordset(strSQL)
If Not rs.EOF Then
rs.MoveLast '' Populate recordset, a little slower
strMessage = strMessage & vbCrLf & tdf.Name & " : " & rs.RecordCount
End If
Next
MsgBox "Found in - " & vbCrLf & IIf(strMessage = vbNullString, "None", strMessage)
End Sub