Combo box dilemma

I have a combo box and I've set the style property to dropdown list and the sorted property to true. I also have a click event procedure linked with this combo box. My dilemma is when I try to place a value from an ADO recordset into the text of the combo box. When the program reaches that line of code it automatically jumps to the associated click event procedure and does an infinite loop there. I need the style property to be in dropdown list so I can prevent entries that aren't in the combo boxes choices but the dropdown list keeps making this problem with the infinite loop.
ccbfSEARCAAsked:
Who is Participating?
 
zzconsumerConnect With a Mentor Commented:
This is not perfect, but it should work:

- Set a private boolean variable valid for the form you are working on. If you fill the box from another form, set a global boolean variable or use property get/let. This variable is intended to allow the ComboBox to Execute the Click- Event.
- use IF in the first line of the combo box to check the variable. If false, exit sub.
- In your sub that fills up the box and the one which checks it, first set to False and afterwards to True.

Greetings
zz
0
 
Ryan ChongCommented:
Hi, why don't you show your codes then ppls can solve it. : )
0
 
Hornet241Commented:
I have no problem doing this, are you sure your code is not in the Change event, I have done that before.
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
Valliappan ANSenior Tech ConsultantCommented:
You should not change the text of the Combo box, in the change event, which will trigger the change event, to put into a loop.
0
 
gajendraCommented:
Please show your code.

Gajendra
0
 
VKCommented:
Hi, i know your problem.

You get a change-event every time textbox of the ComboBox cahnges its text or you click on the button.

You shouln't call a sub/function in the click-event of a combobox which changes the text of that combo (stack overflow).

If you havent another choice you could set a flag, determining whether the change was initiated from user or from code.

0
 
TimCotteeCommented:
zzconsumer, firstly it is not considered good practice to lock questions by posting an answer in this way. You should have submitted your post as a comment. You do NOT have the one and only 100% definitive answer to this problem.

The "answer" posted by zzconsumer doesn't actually address the problem as I understand it. You are attempting to set the .Text property of the combo box to an item in the list, this does in fact raise the click event when you have finished. A slightly better solution to avoid the re-entrance is to include a static boolean in the event code:

Private Sub Combo1_Click()
    Static blnClicked As Boolean
    If Not blnClicked Then
        blnClicked = True
        Exit Sub
    End If
    Combo1.ListIndex = 1
    blnClicked = False
End Sub

Shows how this avoids the infinite loop.
0
 
zzconsumerCommented:
Yeah, I know and I'm sorry for that. As I see, I marked 'answer' instead of 'comment' as I was a bit sleepy this morning.
0
 
ccbfSEARCAAuthor Commented:
I thought of a similar solution (the reverse of using Exit Sub) just before I read yours. It gets me through the infinite loop and many lines that are unnecessarily read but I was hoping to find a property, setting or something that will totally avoid the Click procedure (unless really clicked). Since our solutions were very similar, grading you was like grading myself. This will do for now but I have a lot of these combo boxes and there is an exponential increase in the number of lines of code that my program has to go through.
0
 
Hornet241Commented:

Just a thought, the following does not fire the Click event

    Combo1.Text = Combo1.List(Index)

0
All Courses

From novice to tech pro — start learning today.