Ms access Ms Access:VBA组合框

Ms access Ms Access:VBA组合框,ms-access,combobox,vba,ms-access-2010,Ms Access,Combobox,Vba,Ms Access 2010,我对MS Access表单中的组合框使用以下VBA代码 Private Sub ComboEmployee_AfterUpdate() Dim myFilter As String myFilter = "Select * from Filter_Employee where ([LastName] = iif('" & ComboEmployee & "'='(All)',[LastName],'" & ComboEmployee & "'))" Me.Empl

我对MS Access表单中的组合框使用以下VBA代码

Private Sub ComboEmployee_AfterUpdate()
Dim myFilter As String
myFilter = "Select * from Filter_Employee where ([LastName] = iif('" & ComboEmployee & "'='(All)',[LastName],'" & ComboEmployee & "'))"
Me.Employee_subform.Form.RecordSource = myFilter
Me.Employee_subform.Form.Requery
End Sub
这很好,问题是我现在有一个组合框,它在组合框中包含多个列,请参见图片


如果我使用上面的代码,它将不起作用。。我应该如何调整我的vba代码,以便它在过滤时工作

由于您的代码位于组合的After Update事件中,因此您可以将SELECT调整为组合值,仅在组合值不等于All时添加WHERE子句

私有子组件更新后 将myFilter设置为字符串 myFilter=从筛选器中选择* 如果Me.ComboEmployee.Value ALL,则 myFilter=myFilter&where[LastName]='&Me.ComboEmployee.Value&' 如果结束
Debug.Print myFilter“你能更具体一点吗?什么不起作用谢谢@HansUp,所以我的代码看起来像这个私有子组合11\u更新后的Dim myFilter作为字符串myFilter=Select*from Employee\u组合框&\uwhere Forms!Employee_子窗体!Combo11='All'&uu或[LastName]=表单!Employee_子窗体!Combo11 Debug.Print myFilter'如果combo位于子窗体上,则必须通过其父窗体(包含子窗体的窗体)引用它。。。像这样的模式:形式!父型!子窗体控件!但是,我将为答案添加一种不同的方法,因为我怀疑这会更容易。它起作用了,我发现了我做错了什么非常感谢,不客气。对不起,我没有早点发现更简单的方法嗨,伙计,很抱歉再次打扰你。过滤器在我创建的表单中工作得很好。但是现在我在导航表单中链接了我的表单,它不起作用。。我收到输入参数值-表单!员工表格!Combo11代码:私有子Combo11\u更新Dim myFilter后作为字符串myFilter=Select*from Filter\u Employee&\uwhere Forms!员工表格!Combo11='All'&uu或[LastName]=表单!员工表格!Combo11调试。打印myFilter'