Dai un'occhiata a questo esempio, anche se credo sia troppo complesso:
scarica il file assegnando estensione ZIP.
In sostanza definiti i tuoi controlli che possono generare un criterio, devi definire una sorta di ciclo che ti consenta di iterarli tutti e comporre il CRITERIO TOTALE con le concatenazioni "AND"...
Ovviamente tutto questo è tanto più semplice quanto più tu hai le idee chiare della tecnica da usare.
L'esempio più semplice è che avere NOMI non riconducibili a CICLI rende obbligatorio un codice sequenziale...
Nel tuo caso pertanto non puoi per ogni modifica guardare solo il singolo CRITERIO, ma devi scrivere una funzione che tutte le volte vada a ricostruire COMPLETAMENTE la stringa passando tutti i Controlli...
Dim strWhere as string
If Len(Me!CasellaCombinata1.Value & vbNullstring)>0 then strWhere=strWhere & "GL_CLASS=" & "'" & Me!CasellaCombinata1.Value & "' AND "
If Len(Me!CasellaCombinata2.Value & vbNullstring)>0 then strWhere=strWhere & "YEAR_BOL_DATE=" & Me!CasellaCombinata2.Value & " AND "
If Len(Me!CasellaCombinata3.Value & vbNullstring)>0 then strWhere=strWhere & "MONTH_BOL_DATE=" & Me!CasellaCombinata3.Value & " AND "
.....
' Tolgo l'AND di concatenazione finale che non serve...
If Len(strWhere)>0 Then strWhere=Mid$(strWhere,1,Len(strWhere)-5)
' Ora nella stringa strWHERE hai il criterio concatenato e completo
' pronto per essere applicato alla Where Condition di OpenForm o alla Filter Property...