Вам не хватает знака =
в двух строках кода.
У вас есть его здесь:
strBur = "Bureau='" & Me.cboBur.Value & "'"
^
, но его здесь нет, что вызывает синтаксические ошибки:
strAT = "Categories '" & Me.cboCategories.Value & "'"
^
strFT = "[Funding Type] '" & Me.cboFunding.Value & "'"
^
Кроме того, ваша логика c слишком сложна. Вы можете построить строку фильтра с одним If
для каждого поля со списком:
Dim sFilter As String
sFilter = ""
If cboBur <> "All Bureaus" Then
sFilter = StrAppend(sFilter, strBur, " AND ")
End If
If cboCategories <> "All Categories" Then
sFilter = StrAppend(sFilter, strAT, " AND ")
End If
' etc.
If sFilter <> "" Then
Form_sfrmSpending.Filter = sFilter
Form_sfrmSpending.FilterOn = True
End If
, используя эту вспомогательную функцию, которая включает разделитель, только если обе строки не пусты:
Public Function StrAppend(sBase As String, sAppend As Variant, sSeparator As String) As String
If Len(sAppend) > 0 Then
If sBase = "" Then
StrAppend = Nz(sAppend, "")
Else
StrAppend = sBase & sSeparator & Nz(sAppend, "")
End If
Else
StrAppend = sBase
End If
End Function