Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 770
Default Row menu Insert control ID changes

I've had a bug in a program for months now. I've finally figured out the
cause and a solution, but am interested if somebody has a better solution.

It concerns the right-click Row popup menu that comes up when entire rows
are selected. It only occurs at Excel startup, generally by opening a file
from Windows Explorer. What happens is that the Insert control on the Row
menu has an ID of 3181 until the Row menu is activated for the first time.
Once it's activated the ID becomes 3183. The solution I found was to add
and then immediately delete a control from the Row menu.

To see this, add this module to a workbook, save it, close Excel and then
open the file from Windows Explorer. In the immediate window you'll see the
two IDs. This assumes that the Insert control is number 5 on the Row menu -
adjust if it's not.

Private Sub Workbook_Activate()
Rows(1).EntireRow.Select
With Application.CommandBars("Row")
Debug.Print .Controls(5).ID
' this is the fix
.Controls.Add
.Controls(.Controls.Count).Delete
Debug.Print .Controls(5).ID
End With
End Sub

The reason this is a problem for me is I'm hooking controls (as described in
Professional Excel Development and Daily Dose of Excel) when a workbook is
opened. If it's the first workbook opened after Excel starts, then 3183 is
nothing, and is not hooked, and the click event for 3183 does not run.

XL 2003 Win XP

I'd appreciate any thoughts.

Doug


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default Row menu Insert control ID changes

Hi Doug,

I haven't tried your example but when I want to do things in my open event I
know won't work until, for example, there's a visible workbook, I call with
OnTime.

If you've got a successful ref to 3183 in your open event do it now,
otherwise try again OnTime.

BTW, apart from 3183 are id's 3181, 3197 in "Row" & "Column" relevant for
you

Regards,
Peter T

"Doug Glancy" wrote in message
...
I've had a bug in a program for months now. I've finally figured out the
cause and a solution, but am interested if somebody has a better solution.

It concerns the right-click Row popup menu that comes up when entire rows
are selected. It only occurs at Excel startup, generally by opening a

file
from Windows Explorer. What happens is that the Insert control on the Row
menu has an ID of 3181 until the Row menu is activated for the first time.
Once it's activated the ID becomes 3183. The solution I found was to add
and then immediately delete a control from the Row menu.

To see this, add this module to a workbook, save it, close Excel and then
open the file from Windows Explorer. In the immediate window you'll see

the
two IDs. This assumes that the Insert control is number 5 on the Row

menu -
adjust if it's not.

Private Sub Workbook_Activate()
Rows(1).EntireRow.Select
With Application.CommandBars("Row")
Debug.Print .Controls(5).ID
' this is the fix
.Controls.Add
.Controls(.Controls.Count).Delete
Debug.Print .Controls(5).ID
End With
End Sub

The reason this is a problem for me is I'm hooking controls (as described

in
Professional Excel Development and Daily Dose of Excel) when a workbook is
opened. If it's the first workbook opened after Excel starts, then 3183

is
nothing, and is not hooked, and the click event for 3183 does not run.

XL 2003 Win XP

I'd appreciate any thoughts.

Doug




  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 770
Default Row menu Insert control ID changes

Thanks Peter.

That's a good point about OnTime, but in this case it doesn't seem to change
until the Row menu is accessed once.

Yes, I've got 4 or 5 different insert row IDs that I'm hooking.

Doug

"Peter T" <peter_t@discussions wrote in message
...
Hi Doug,

I haven't tried your example but when I want to do things in my open event
I
know won't work until, for example, there's a visible workbook, I call
with
OnTime.

If you've got a successful ref to 3183 in your open event do it now,
otherwise try again OnTime.

BTW, apart from 3183 are id's 3181, 3197 in "Row" & "Column" relevant for
you

Regards,
Peter T

"Doug Glancy" wrote in message
...
I've had a bug in a program for months now. I've finally figured out the
cause and a solution, but am interested if somebody has a better
solution.

It concerns the right-click Row popup menu that comes up when entire rows
are selected. It only occurs at Excel startup, generally by opening a

file
from Windows Explorer. What happens is that the Insert control on the
Row
menu has an ID of 3181 until the Row menu is activated for the first
time.
Once it's activated the ID becomes 3183. The solution I found was to add
and then immediately delete a control from the Row menu.

To see this, add this module to a workbook, save it, close Excel and then
open the file from Windows Explorer. In the immediate window you'll see

the
two IDs. This assumes that the Insert control is number 5 on the Row

menu -
adjust if it's not.

Private Sub Workbook_Activate()
Rows(1).EntireRow.Select
With Application.CommandBars("Row")
Debug.Print .Controls(5).ID
' this is the fix
.Controls.Add
.Controls(.Controls.Count).Delete
Debug.Print .Controls(5).ID
End With
End Sub

The reason this is a problem for me is I'm hooking controls (as described

in
Professional Excel Development and Daily Dose of Excel) when a workbook
is
opened. If it's the first workbook opened after Excel starts, then 3183

is
nothing, and is not hooked, and the click event for 3183 does not run.

XL 2003 Win XP

I'd appreciate any thoughts.

Doug






  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default Row menu Insert control ID changes

That's a good point about OnTime, but in this case it doesn't seem to
change
until the Row menu is accessed once.


I'm not sure of the order of things for you but typically calling OnTime in
an Addin's open will only fire once all wb's have loaded with at least one
visible, when you can then do your stuff to activate/deactivate a row etc.

Yes, I've got 4 or 5 different insert row IDs that I'm hooking.


Just in case these include 22 or 6002 watch out for version differences (I'm
guessing you're trying to trap insert/paste menus) , Tom Ogilvy's catch
somewhere in this -
http://tinyurl.com/yhzpbw

Another vaguely related thread
http://tinyurl.com/yetaku

Regards,
Peter T


"Doug Glancy" wrote in message
...
Thanks Peter.

That's a good point about OnTime, but in this case it doesn't seem to

change
until the Row menu is accessed once.

Yes, I've got 4 or 5 different insert row IDs that I'm hooking.

Doug

"Peter T" <peter_t@discussions wrote in message
...
Hi Doug,

I haven't tried your example but when I want to do things in my open

event
I
know won't work until, for example, there's a visible workbook, I call
with
OnTime.

If you've got a successful ref to 3183 in your open event do it now,
otherwise try again OnTime.

BTW, apart from 3183 are id's 3181, 3197 in "Row" & "Column" relevant

for
you

Regards,
Peter T

"Doug Glancy" wrote in message
...
I've had a bug in a program for months now. I've finally figured out

the
cause and a solution, but am interested if somebody has a better
solution.

It concerns the right-click Row popup menu that comes up when entire

rows
are selected. It only occurs at Excel startup, generally by opening a

file
from Windows Explorer. What happens is that the Insert control on the
Row
menu has an ID of 3181 until the Row menu is activated for the first
time.
Once it's activated the ID becomes 3183. The solution I found was to

add
and then immediately delete a control from the Row menu.

To see this, add this module to a workbook, save it, close Excel and

then
open the file from Windows Explorer. In the immediate window you'll

see
the
two IDs. This assumes that the Insert control is number 5 on the Row

menu -
adjust if it's not.

Private Sub Workbook_Activate()
Rows(1).EntireRow.Select
With Application.CommandBars("Row")
Debug.Print .Controls(5).ID
' this is the fix
.Controls.Add
.Controls(.Controls.Count).Delete
Debug.Print .Controls(5).ID
End With
End Sub

The reason this is a problem for me is I'm hooking controls (as

described
in
Professional Excel Development and Daily Dose of Excel) when a workbook
is
opened. If it's the first workbook opened after Excel starts, then

3183
is
nothing, and is not hooked, and the click event for 3183 does not run.

XL 2003 Win XP

I'd appreciate any thoughts.

Doug








Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Cannot insert worksheet in exel - not available in insert menu pedro39 Excel Worksheet Functions 1 July 24th 08 12:09 PM
Hide menu bar control Freshman Excel Worksheet Functions 6 October 24th 07 10:51 AM
Why does a menu pop up when I hit control-C? Oregonnews Excel Worksheet Functions 2 April 24th 07 10:48 PM
What is the application control menu rw7402 New Users to Excel 0 October 31st 06 02:52 AM
Obtain value of a control on a shortcut menu quartz[_2_] Excel Programming 1 February 10th 05 07:20 PM


All times are GMT +1. The time now is 03:49 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"