Private Sub TuComboBox_NotInList(NewData As String, Response As Integer)
Dim strSQL As String
' Evita que el usuario añada nuevos elementos si no quieres esa funcionalidad
Response = acDataErrDisplay
' Filtra el origen de la fila del ComboBox con la nueva búsqueda
strSQL = "SELECT ID, NombreCampo FROM TuTabla WHERE NombreCampo LIKE ""*" & NewData & "*"" ORDER BY NombreCampo;"
' Actualiza el origen de la fila del ComboBox
Me.TuComboBox.RowSource = strSQL
' Abre la lista desplegable de nuevo para mostrar los resultados del filtro
Me.TuComboBox.Dropdown
' Cancela el error predeterminado de "No en la lista"
Response = acDataErrContinue
End Sub
Private Sub TuComboBox_Change()
' Restablece el origen de la fila a su estado original cuando el usuario cambia el texto,
' para que siempre se busquen los datos completos inicialmente.
' Esto es importante para que el filtro no quede aplicado permanentemente
Me.TuComboBox.RowSource = "SELECT ID, NombreCampo FROM TuTabla ORDER BY NombreCampo;"
End Sub
' Opcional: Para resetear el filtro al salir del control
Private Sub TuComboBox_Exit(Cancel As Integer)
Me.TuComboBox.RowSource = "SELECT ID, NombreCampo FROM TuTabla ORDER BY NombreCampo;"
End Sub