Private Sub 生产单位_Change() '组合框的更改后事件
Me.列表142.SetFocus '先将焦点移到别的控件上
Me.生产单位.Requery '更新组合框的源数据
Me.生产单位.SetFocus '然后再将焦点返回到原组合框
If Nz(生产单位) <> "" Then Me.生产单位.SelStart = Len(Me.生产单位) '如果组合框有数据时将焦点移到字符的后面
Me.生产单位.Dropdown '展开组合框的列表数据
End Sub
这里有一句代码
If Nz(生产单位) <> "" Then Me.生产单位.SelStart = Len(Me.生产单位) '如果组合框有数据时将焦点移到字符的后面
焦点返回到组合框后,将焦点移到字符的最后面,没有这句的话,以前输入的数据变成修改状态,这是我们不想看到的结果,从而使人感觉可以连续地输入数据
这个提议很好, 其实在原基础上增加一句代码就能实现,代码如下
Private Sub 生产单位_Change() '组合框的更改后事件
Me.列表142.SetFocus '先将焦点移到别的控件上
Me.生产单位.Requery '更新组合框的源数据
Me.生产单位.SetFocus '然后再将焦点返回到原组合框
If Nz(生产单位) <> "" Then Me.生产单位.SelStart = Len(Me.生产单位) '如果组合框有数据时将焦点移到字符的后面
Me.生产单位.Dropdown '展开组合框的列表数据
If Me.生产单位.ListCount = 1 Then Me.生产单位 = Me.生产单位.ItemData(0) '当只有一个符合条件时,直接提取数据到组合框
End Sub