You are absolutely right... what I said does not apply to the VBA ComboBox
in the Office product line. It *does* apply to the compiled VB world's
ComboBox and I made the mistake of assuming the same base control would be
behind both implementations. But, as your message points out, I was wrong in
that belief and I apologize if I have misled anyone because of it.
I do have to say, though, that having the Change event fire whether the text
is changed *or* the list is Clicked seems to make it a less useful event
than the one in the compiled VB world. Over there, a Click event is reserved
solely for a manual selection from the list itself and the Change event for
a manual change to the text in the text field itself... there is no overlap
between the two and that makes, in my opinion, for easier coding. I'm a
little surprised that this event model was not carried through to the Office
ComboBox.
By the way, thank you for bringing this to my attention... I really
appreciate it.
Rick
"Tim Zych" <tzych@NOSp@mE@RTHLINKDOTNET> wrote in message
news:
[email protected]...
>> The Change event of a ComboBox gets fired only when the text is manually
>> changed... not from selecting from the list.
>
> I don't think so Rick. If you create a sample form/cbo and try it out you
> should see. Type in a value, or select from the list in any way, and the
> change event is triggered. The help file has been updated, I believe, to
> include a lot more details about the control and the change/click events
> than prior versions documented.
>
> ----------------------------------------------------------
> From the help file in XL2003, Combobox control -> Events ->
> ------------------
> Change event:
> ------------------
> The Change event occurs when the setting of the Value property changes,
> regardless of whether the change results from execution of code or a user
> action in the interface.
> Note In some cases, the Click event may also occur when the Value property
> changes. However, using the Change event is the preferred technique for
> detecting a new value for a property.
> ----------------------------------------------------------
>
> Private Sub ComboBox1_Change()
> MsgBox "change"
> End Sub
>
> Private Sub UserForm_Initialize()
> With Me.ComboBox1
> .AddItem "a"
> .AddItem "b"
> .AddItem "c"
> End With
> End Sub
>
>
> Tim Zych
> SF, CA
>
>
> "Rick Rothstein (MVP - VB)" <[email protected]> wrote in
> message news:[email protected]...
>> The Change event of a ComboBox gets fired only when the text is manually
>> changed... not from selecting from the list. I suspect you have code in
>> your Change event which you think is doing something that actually is
>> happening automatically; hence, when you type into the text field,
>> whatever happens automatically takes place and then something in your
>> Change event code makes it happen again. I can't tell you any more than
>> that because you didn't post your code for us to look at.
>>
>> Rick
>>
>>
>> "Smurfette18" <[email protected]> wrote in message
>> news:0f220c1d-ccef-4cb7-ae49-a2b86ea12ad3@e25g2000prg.googlegroups.com...
>>> Hello,
>>>
>>> I have combo box that allows users to select from a list or enter a
>>> value freeform. I also have a change event for this combo box.
>>> Everything works fine when the user selects from the list, but when he
>>> or she enters a value by hand, the change event sometimes fires twice
>>> for no apparent reason. For instance, if you select "0" from the
>>> list, it fires once, but if you type "0" directly in the box, it fires
>>> twice. I already tried disabling events before my code and re-
>>> enabling them after it runs, but that did not work. Any help would be
>>> appreciated.
>>>
>>> Thanks!
>>
>
>