Solved

Combo box dilemma

Posted on 2001-06-05
10
191 Views
Last Modified: 2010-05-02
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.
0
Comment
Question by:ccbfSEARCA
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
10 Comments
 
LVL 52

Expert Comment

by:Ryan Chong
ID: 6158272
Hi, why don't you show your codes then ppls can solve it. : )
0
 
LVL 3

Expert Comment

by:Hornet241
ID: 6158283
I have no problem doing this, are you sure your code is not in the Change event, I have done that before.
0
 
LVL 9

Expert Comment

by:Valliappan AN
ID: 6158455
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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 3

Expert Comment

by:gajendra
ID: 6158509
Please show your code.

Gajendra
0
 
LVL 6

Expert Comment

by:VK
ID: 6158751
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
 
LVL 1

Accepted Solution

by:
zzconsumer earned 50 total points
ID: 6158815
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
 
LVL 43

Expert Comment

by:TimCottee
ID: 6159307
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
 
LVL 1

Expert Comment

by:zzconsumer
ID: 6160047
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
 

Author Comment

by:ccbfSEARCA
ID: 6160404
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
 
LVL 3

Expert Comment

by:Hornet241
ID: 6161949

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

    Combo1.Text = Combo1.List(Index)

0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
This article describes how to use a set of graphical playing cards to create a Draw Poker game in Excel or VB6.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
Suggested Courses
Course of the Month7 days, 9 hours left to enroll

632 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question