访问级联组合框自动填充当剩下一个选项时

时间:2017-09-12 19:43:55

标签: vba ms-access combobox autocomplete cascadingdropdown

如果只剩下一个选项,我想在自动填充的表单上有~50个级联组合框。我找到了一些适用于cboTwo(第二个组合框)的代码,但其他组合框并没有自动填充。我仍然需要使用下拉菜单进行选择。如果下拉列表中只剩下一个选项,有什么方法可以让我的所有组合框自动填充?我更喜欢某种宏观帮助,因为这是我到目前为止所使用的,但如果有必要我会使用VBA。谢谢你的帮助!

Private Sub cboOne_AfterUpdate()

Me.cboTwo.Requery
If Me.cboTwo.ListCount = 1 Then
With Me.cboTwo
cboTwo.SetFocus
cboTwo.Value = cboTwo.ItemData(0)
End With
End If
End Sub
Private Sub cboTwo_AfterUpdate()

Me.cboThree.Requery
If Me.cboThree.ListCount = 1 Then
With Me.cboThree
cboThree.SetFocus
cboThree.Value = cboThree.ItemData(0)
End With
End If

End Sub

1 个答案:

答案 0 :(得分:0)

问题可能在于误解了访问控制事件。与许多其他语言不同,控制事件很少由VBA代码中的更改触发。换句话说,在代码中执行cboTwo_AfterUpdate()时,不会自动调用事件处理程序cboTwo.Value = cboTwo.ItemData(0),因此不会有任何自动事件级联。请尝试以下模式:

Private Sub cboOne_AfterUpdate()
  Me.cboTwo.Requery
  If Me.cboTwo.ListCount = 1 Then
    With Me.cboTwo
      cboTwo.SetFocus
      cboTwo.Value = cboTwo.ItemData(0)
      cboTwo_AfterUpdate
    End With
  End If
End Sub

Private Sub cboTwo_AfterUpdate()
  Me.cboThree.Requery
  If Me.cboThree.ListCount = 1 Then
    With Me.cboThree
      cboThree.SetFocus
      cboThree.Value = cboThree.ItemData(0)
      cboThree_AfterUpdate
    End With
  End If    
End Sub