Ik gebruik mijn eigen code ook, en daar hoort geen Else in.... Kortom: je hebt het probleem nog steeds niet getackeld! Dat betekent, dat je keuzelijst cboJaar en/of cboAfdeling nog steeds verkeerde waarden afgeeft. Je kunt dat ondervangen zoals je gedaan hebt, maar een structurele oplossing is dat niet, in mijn ogen. Je moet streven naar foutloze code, en naar correct werkende keuzelijsten. Anders kom je het probleem nog wel een keer tegen.
Nogmaals: aan mijn code makeert niks, en hij werkt bij mij ook prima. Doet-ie het bij jou niet, dan ligt het dus aan jouw bronnen
Code:
Function FilterMaken()
Dim sFilter As String
If Me.cboJaar & "" <> "" Then sFilter = "[Jaar]=" & Me.cboJaar
Eerst de keuzelijst uitlezen. Als de keuzelijst (met een lege string) niet leeg is, dan de waarde toewijzen aan het filter.
Code:
If Me.cboAfdeling & "" <> "" Then
If sFilter <> "" Then sFilter = sFilter & " AND "
Controleren of de keuzelijst Me.cboAfdeling + lege string leeg is of niet. Als er een waarde is geselecteerd, kijk je of er in de variabele sFilter een string staat. Als dat zo is, dan is er dus een jaar geselecteerd in de eerste stap. Dat houdt automatisch in, dat het filter moet worden uitgebreid met het argument AND. Dit gebeurt dus alleen als sFilter leeg is! Krijg je toch het woord AND in je string zonder dat er een jaar is geselecteerd, dan is de string niet leeg. En dat hoort dus niet...
Code:
sFilter = "[Afdeling] = '" & Me.cboAfdeling & "'"
End If
Vervolgens breid je het filter uit met de variabele cboAfdeling. En daarna herhaal je de procedure voor de overige keuzevelden.
Code:
If Me.cboHandeling & "" <> "" Then
If sFilter <> "" Then sFilter = sFilter & " AND "
sFilter = sFilter & "[Handeling] = '" & Me.cboHandeling & "'"
End If
Als laatste zet je, als het filter niet leeg is het filter aan, en anders zet je het filter uit.
Code:
If sFilter <> "" Then
Me.Filter = sFilter
Me.FilterOn = True
Else
Me.Filter = ""
Me.FilterOn = False
End If
End Function
Veel makkelijker kun je het filter niet opbouwen, en je hebt er verder geen ELSE .. THEN voor nodig.