Nicholas Ibarra
Nicholas Ibarra

Reputation: 504

Access Listbox AfterUpdate Not Firing when Selected = True

I have an Access form with a listbox and a combo box.

Private Sub Form_Open(Cancel As Integer)
   '... misc code
   me.comboBox.RowSource = "sql statement"
   call comboBox_AfterUpdate
End Sub

Private Sub comboBox_AfterUpdate()
   listbox.Selected(0) = true
End Sub

Private Sub listbox_AFterUpdate()
   '.... important code that updates the form
End Sub

On the form load/open, the the code runs as

Form_Open > comboBox_AfterUpdate > listbox_AfterUpdate 

However after the form has already loaded, when the combo box is changed and the comboBox_AfterUpdate is triggered, the listbox_AfterUpdate() is NOT triggered.

I would move the code in the listbox_AfterUpdate() to a separate sub-routine, but that would call the code to run twice when the form loads. Any ideas on why this happens?

Similar issue here: http://www.tek-tips.com/viewthread.cfm?qid=1395160

Upvotes: 1

Views: 825

Answers (1)

Erik A
Erik A

Reputation: 32642

You could use two custom functions and use optional parameters to know the context in which it is called. That way you have full control over when which function does which.

E.g.

Public Sub MyFunc1 (Optional CalledFromLoad As Boolean)
Public Sub MyFunc2 (Optional CalledFromLoad As Boolean)

Private Sub comboBox_AfterUpdate()
     Call MyFunc1 False
End Sub
Private Sub listbox_AFterUpdate()
   Call MyFunc2 False
End Sub
Private Sub Form_Open(Cancel As Integer)
   Call MyFunc1 True
End Sub

Moving all your code gives you a greater degree of customization, and can help you avoid calling the same code twice.

You could possibly set a global variable in MyFunc1, then trigger MyFunc2 by changing the listbox, and then reset that global variable again. Numerous solutions are possible.

Upvotes: 1

Related Questions