Lo que debes hacer es ir analizando si los distintos cuadros de texto de búsqueda tienen valor o no, para construir la parte de filtro (el WHERE) de la SQL que te servirá de base para el cuadro de lista.
Sería una cosa así, suponiendo que tus cuadros de texto se llamen txtFiltro1, txtFiltro2... y el cuadro de lista se llame lstResultados:
Private Sub cmdFiltrar_Click()
Dim miSQL as String
Dim miFiltro as String
'Inicias la parte común de la SQL (la que coge todos los registros)
miSQL="SELECT * FROM TuTabla " 'Fijate que hay un espacio antes de las comillas de cierre
'Inicias el filtro
miFiltro="WHERE " 'Fijate que hay un espacio antes de las comillas de cierre
'Analizas el primer cuadro de filtro (campo de tipo texto)
If Nz(Me.txtFiltro1,"")<>"" Then
miFiltro=miFiltro & "[NombreCampo1]='" & Me.txtFiltro1 & "' AND "
End If
'Analizas el segundo cuadro de filtro (campo de tipo número)
If Nz(Me.txtFiltro1,-1)<>-1 Then
miFiltro=miFiltro & "[NombreCampo2]=" & Me.txtFiltro2 & " AND "
End If
'Analizas el tercer cuadro de filtro (campo de tipo fecha)
If Nz(Me.txtFiltro3,-1)<>-1 Then
miFiltro=miFiltro & "[NombreCampo3]=#" & Format(Me.txtFiltro3,"mm/dd/yyyy") & "# AND "
End If
...
'Quitas el último AND
if len(miFiltro)>6 Then
miFiltro=Left(miFiltro,len(miFiltro)-5)
Else
MsgBox "No has seleccionado ningún campo para filtrar"
Exit Sub
End If
'Construyes la SQL Completa para el cuadro de lista
miSQL=miSQL & miFiltro
'Se la asignas al cuadro de lista
Me.lstResultados.RowSource=miSQL
Me.lstResultados.Requery
End Sub
Para seleccionar un valor del cuadro de lista, en su evento "Al hacer click" le generas un código como este:
Private Sub lstResultados_Click()
DoCmd.OpenReport "NombreInforme",,,"[CampoClave]=" & Me.lstResultados
End Sub
Supongo que tienes un campo clave principal (CampoClave, de tipo numérico, y que es la columna dependiente del cuadro de lista, es decir, el valor que coge el cuadro de lista)