如果只剩下一个选项,我想在自动填充的表单上有~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
答案 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