![]() |
change in combobox not firing
Hi all,
I have a pop-up (right-click) menu that I'm creating on the fly based on what object my user right-clicks on, and everything seems to be working ok except that when I add a control of type msocontrolcombobox, I can't trap the _change event. I have a class module for the menu with several Private WithEvents commandbarbuttons that are working, followed by : Private WithEvents btnSetTarget As CommandBarComboBox Private Sub btnSetTarget_Change(ByVal Ctrl As Office.CommandBarComboBox) Debug.Print Ctrl.Text (I'd like to put more substatial code here) End Sub and in the code to show the pop-up: public sub ShowMenu() With Application.CommandBars.Add( Position:=msoBarPopup) .... other buttons defined .... Set btnSetTarget = .Controls.Add(Type:=msoControlComboBox) With btnSetTarget .AddItem "1%", 1 .AddItem "2%", 2 .AddItem "3%", 3 .AddItem "5%", 4 .Width = 120 .Caption = "Set '" & mAxis.AxisTitle.Caption & "' Target" End With .ShowPopup .Delete End With End Sub As I said up above, my other buttons work fine - the click event occurs between the .showpopup and .delete lines in the code above. However, for btnSetTarget, the change event doesn't seem to trigger. What's wrong? TIA. |
change in combobox not firing
the btnsetTarget in your set statement has no relation to your btnsetTarget
in your class module. You never tie your button to the class. Look at the help example for the change event of a commandbarcombo object to see what I am talking about. The only omission I saw was the example doesn't state explicitly that the class module is named ComboBoxHandler Although you can tell that by looking at the code, it should be stated clearly I would think. Observing that, the example worked fine for me. Follow that pattern -- Regards, Tom Ogilvy "Mike" wrote: Hi all, I have a pop-up (right-click) menu that I'm creating on the fly based on what object my user right-clicks on, and everything seems to be working ok except that when I add a control of type msocontrolcombobox, I can't trap the _change event. I have a class module for the menu with several Private WithEvents commandbarbuttons that are working, followed by : Private WithEvents btnSetTarget As CommandBarComboBox Private Sub btnSetTarget_Change(ByVal Ctrl As Office.CommandBarComboBox) Debug.Print Ctrl.Text (I'd like to put more substatial code here) End Sub and in the code to show the pop-up: public sub ShowMenu() With Application.CommandBars.Add( Position:=msoBarPopup) .... other buttons defined .... Set btnSetTarget = .Controls.Add(Type:=msoControlComboBox) With btnSetTarget .AddItem "1%", 1 .AddItem "2%", 2 .AddItem "3%", 3 .AddItem "5%", 4 .Width = 120 .Caption = "Set '" & mAxis.AxisTitle.Caption & "' Target" End With .ShowPopup .Delete End With End Sub As I said up above, my other buttons work fine - the click event occurs between the .showpopup and .delete lines in the code above. However, for btnSetTarget, the change event doesn't seem to trigger. What's wrong? TIA. |
change in combobox not firing
Sorry Tom,
I should have made it more clear, but I edited out a lot of code for brevity, ALL the code snippets that I posted ARE from the class module. I played around with the example you suggested anyways though, and it led me to the issue rather quickly: the example is using a floating commandbar, my code is using a popup (rightclick shortcut) commandbar. When I convert the example commandbar to become an msobarpopup, the example exhibits the same failure style as my code - I guess because of the modality of the popup commandbar tied into that it dissappears as soon as you click a button or select a value from the combobox dropdown. Fortunately, I have another way to deal with this, unfortunately it's not as 'slick'. Thanks for the help. "Tom Ogilvy" wrote in message ... the btnsetTarget in your set statement has no relation to your btnsetTarget in your class module. You never tie your button to the class. Look at the help example for the change event of a commandbarcombo object to see what I am talking about. The only omission I saw was the example doesn't state explicitly that the class module is named ComboBoxHandler Although you can tell that by looking at the code, it should be stated clearly I would think. Observing that, the example worked fine for me. Follow that pattern -- Regards, Tom Ogilvy "Mike" wrote: Hi all, I have a pop-up (right-click) menu that I'm creating on the fly based on what object my user right-clicks on, and everything seems to be working ok except that when I add a control of type msocontrolcombobox, I can't trap the _change event. I have a class module for the menu with several Private WithEvents commandbarbuttons that are working, followed by : Private WithEvents btnSetTarget As CommandBarComboBox Private Sub btnSetTarget_Change(ByVal Ctrl As Office.CommandBarComboBox) Debug.Print Ctrl.Text (I'd like to put more substatial code here) End Sub and in the code to show the pop-up: public sub ShowMenu() With Application.CommandBars.Add( Position:=msoBarPopup) .... other buttons defined .... Set btnSetTarget = .Controls.Add(Type:=msoControlComboBox) With btnSetTarget .AddItem "1%", 1 .AddItem "2%", 2 .AddItem "3%", 3 .AddItem "5%", 4 .Width = 120 .Caption = "Set '" & mAxis.AxisTitle.Caption & "' Target" End With .ShowPopup .Delete End With End Sub As I said up above, my other buttons work fine - the click event occurs between the .showpopup and .delete lines in the code above. However, for btnSetTarget, the change event doesn't seem to trigger. What's wrong? TIA. |
All times are GMT +1. The time now is 06:40 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com