what about having a function in your main form. Then after update of the list boxes you call the function, which will assign a recordsource to the subform.
Function FilterSubform()
dim strSQL as string
dim strWhere as string, strDelim as string
strDelim = "":strwhere = ""
If nz(lst1,0) > 0 then
strWhere = "tblAPK = " & lst1
strDelim = " And "
end if
If nz(lst2,0) > 0 then
strWhere = strWhere & strdelim & "tblBPK = " & lst2
end if
if strwhere <> "" then strwhere = " Where " & strwhere
strsql = "Select * From qry" & strwhere
me!subform.form.RecordSource = strsql
End Function