【发布时间】:2015-09-24 04:09:03
【问题描述】:
我有一个包含许多记录的连续表格。每条记录都包含一个组合框,该组合框有 vba 代码在获得焦点时过滤可查看的选择(它通过更改 RowSource 来实现。
我的问题是,如果我单击记录 A 中的组合框,然后单击组合框是记录 B,则记录 B 的显示过滤器将应用于记录 A。如果单击另一个控件,则没有此问题在单击组合框之间。
为什么即使焦点已(假设)丢失,过滤器仍应用于 A 的组合框?以及如何防止发生此显示错误?我现在唯一的解决方案是在组合框的焦点丢失时使任意控件获得焦点,但显然这对用户来说很烦人......
可能相关的代码(SuperintendentID 是我的组合框的名称):
Private Sub SuperintendentID_GotFocus()
'Filters SuperintendentID based on the task's division
Me!SuperintendentID.RowSource = "SELECT tblJoinDivisionSuperintendent.SuperintendentID, [FirstName] & "" "" & [LastName] AS Name, tblJoinDivisionSuperintendent.DivisionID FROM tblSuperintendent RIGHT JOIN (tblDivision RIGHT JOIN tblJoinDivisionSuperintendent ON tblDivision.ID = tblJoinDivisionSuperintendent.DivisionID) ON tblSuperintendent.ID = tblJoinDivisionSuperintendent.SuperintendentID WHERE tblJoinDivisionSuperintendent.DivisionID = " & Me!DivisionID & ";"
Me!SuperintendentID = Me!SuperintendentID.ItemData(0)
Me!SuperintendentID = Me!SuperintendentID.OldValue 'Prevents a new value from being assigned when the control first gains focus
End Sub
【问题讨论】:
标签: ms-access combobox vba ms-access-2013