Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 24
Default Volatile Macro for Adding Controls When Opening Workbook

A helpful group member here gave me the following macro, which adds three
selections to the pop-up menu which appears when you right-click on the
spreadsheet:

Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

It works really well. I've tried modifying it as follows, however, so that
it runs automatically when the workbook opens:

Private Sub Workbook_Open()
Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

And now it is extremely volatile. Sometimes it adds just one control when I
open the workbook, but more usually it does nothing at all. Sometimes it
crashes while trying to open. Where have I gone wrong? (If it's useful to
know, I'm running this with Excel for Mac 2004 (11.2) on the Tiger OS.)

If anyone can help, I'd be very appreciative!

  #2   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 10,593
Default Volatile Macro for Adding Controls When Opening Workbook

Put you add_Controls macro back where it was, in a standard code module.

Add another one there

Sub Delete_Controls()
Dim i As Long
Dim caption_names As Variant
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
.Controls(caption_names(i)).Delete
Next i
End With
End Sub

Replace the Workbook_Open code with this

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Delete_Controls
End Sub

Private Sub Workbook_Open()
Call delet_controls
Call Add_Controls
End Sub

'This is workbook event code.
'To input this code, right click on the Excel icon on the worksheet
'(or next to the File menu if you maximise your workbooks),
'select View Code from the menu, and paste the code


--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Wuddus" wrote in message
...
A helpful group member here gave me the following macro, which adds three
selections to the pop-up menu which appears when you right-click on the
spreadsheet:

Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

It works really well. I've tried modifying it as follows, however, so that
it runs automatically when the workbook opens:

Private Sub Workbook_Open()
Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

And now it is extremely volatile. Sometimes it adds just one control when

I
open the workbook, but more usually it does nothing at all. Sometimes it
crashes while trying to open. Where have I gone wrong? (If it's useful to
know, I'm running this with Excel for Mac 2004 (11.2) on the Tiger OS.)

If anyone can help, I'd be very appreciative!



  #3   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 11,123
Default Volatile Macro for Adding Controls When Opening Workbook

From
http://www.rondebruin.nl/menuid.htm#Add

Keep the macro's in a normal module and in the Thisworkbook event only call the macro

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Add_Controls
End Sub

Private Sub Workbook_Open()
Call Delete_Controls
End Sub


--
Regards Ron de Bruin
http://www.rondebruin.nl



"Wuddus" wrote in message ...
A helpful group member here gave me the following macro, which adds three
selections to the pop-up menu which appears when you right-click on the
spreadsheet:

Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

It works really well. I've tried modifying it as follows, however, so that
it runs automatically when the workbook opens:

Private Sub Workbook_Open()
Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

And now it is extremely volatile. Sometimes it adds just one control when I
open the workbook, but more usually it does nothing at all. Sometimes it
crashes while trying to open. Where have I gone wrong? (If it's useful to
know, I'm running this with Excel for Mac 2004 (11.2) on the Tiger OS.)

If anyone can help, I'd be very appreciative!



  #4   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 10,593
Default Volatile Macro for Adding Controls When Opening Workbook

Novel approach Ron, add them when you close the workbook, delete them when
you open it <vbg

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Ron de Bruin" wrote in message
...
From
http://www.rondebruin.nl/menuid.htm#Add

Keep the macro's in a normal module and in the Thisworkbook event only

call the macro

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Add_Controls
End Sub

Private Sub Workbook_Open()
Call Delete_Controls
End Sub


--
Regards Ron de Bruin
http://www.rondebruin.nl



"Wuddus" wrote in message

...
A helpful group member here gave me the following macro, which adds three
selections to the pop-up menu which appears when you right-click on the
spreadsheet:

Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

It works really well. I've tried modifying it as follows, however, so

that
it runs automatically when the workbook opens:

Private Sub Workbook_Open()
Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

And now it is extremely volatile. Sometimes it adds just one control

when I
open the workbook, but more usually it does nothing at all. Sometimes it
crashes while trying to open. Where have I gone wrong? (If it's useful

to
know, I'm running this with Excel for Mac 2004 (11.2) on the Tiger OS.)

If anyone can help, I'd be very appreciative!





  #5   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 24
Default Volatile Macro for Adding Controls When Opening Workbook

Bob and Ron:

Thank you both! Because of my own stupidity, I had a bit of difficulty
getting it to work, but I finally did. Your suggestions were just what was
needed.

May I ask a follow-up question? Is it possible to modify the code so that
the controls appear in and delete from the menu like they do now, but so
that, if I have multiple workbooks open, that the controls only appear on the
menu if the window for the workbook in question is selected? The macros the
controls activate were written with only the one workbook in mind. I don't
expect it will be much of an issue for users to have the controls available
on their right-click menus if they are in another active window, but if I
could make them go away in those cases, that would be spiffy. Is this
possible?

Also, I have copies of Walkenbach's two books on VBA programming
requistitioned so that I don't continue to be so stupid. Could you recommend
any other choices for the novice VBA programmer, or any websites with a good
overview?

You guys are the greatest! Thanks again!

"Bob Phillips" wrote:

Novel approach Ron, add them when you close the workbook, delete them when
you open it <vbg

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Ron de Bruin" wrote in message
...
From
http://www.rondebruin.nl/menuid.htm#Add

Keep the macro's in a normal module and in the Thisworkbook event only

call the macro

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Add_Controls
End Sub

Private Sub Workbook_Open()
Call Delete_Controls
End Sub


--
Regards Ron de Bruin
http://www.rondebruin.nl



"Wuddus" wrote in message

...
A helpful group member here gave me the following macro, which adds three
selections to the pop-up menu which appears when you right-click on the
spreadsheet:

Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

It works really well. I've tried modifying it as follows, however, so

that
it runs automatically when the workbook opens:

Private Sub Workbook_Open()
Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

And now it is extremely volatile. Sometimes it adds just one control

when I
open the workbook, but more usually it does nothing at all. Sometimes it
crashes while trying to open. Where have I gone wrong? (If it's useful

to
know, I'm running this with Excel for Mac 2004 (11.2) on the Tiger OS.)

If anyone can help, I'd be very appreciative!








  #6   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 10,593
Default Volatile Macro for Adding Controls When Opening Workbook

In Thisworkbook code module

Private Sub Workbook_Activate()
Call Add_Controls
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Delete_Controls
End Sub

Private Sub Workbook_Deactivate()
Call Delete_Controls
End Sub

Private Sub Workbook_Open()
Call Delete_Controls
Call Add_Controls
End Sub

'This is workbook event code.
'To input this code, right click on the Excel icon on the worksheet
'(or next to the File menu if you maximise your workbooks),
'select View Code from the menu, and paste the code


--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Wuddus" wrote in message
...
Bob and Ron:

Thank you both! Because of my own stupidity, I had a bit of difficulty
getting it to work, but I finally did. Your suggestions were just what was
needed.

May I ask a follow-up question? Is it possible to modify the code so that
the controls appear in and delete from the menu like they do now, but so
that, if I have multiple workbooks open, that the controls only appear on

the
menu if the window for the workbook in question is selected? The macros

the
controls activate were written with only the one workbook in mind. I don't
expect it will be much of an issue for users to have the controls

available
on their right-click menus if they are in another active window, but if I
could make them go away in those cases, that would be spiffy. Is this
possible?

Also, I have copies of Walkenbach's two books on VBA programming
requistitioned so that I don't continue to be so stupid. Could you

recommend
any other choices for the novice VBA programmer, or any websites with a

good
overview?

You guys are the greatest! Thanks again!

"Bob Phillips" wrote:

Novel approach Ron, add them when you close the workbook, delete them

when
you open it <vbg

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Ron de Bruin" wrote in message
...
From
http://www.rondebruin.nl/menuid.htm#Add

Keep the macro's in a normal module and in the Thisworkbook event

only
call the macro

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Add_Controls
End Sub

Private Sub Workbook_Open()
Call Delete_Controls
End Sub


--
Regards Ron de Bruin
http://www.rondebruin.nl



"Wuddus" wrote in message

...
A helpful group member here gave me the following macro, which adds

three
selections to the pop-up menu which appears when you right-click on

the
spreadsheet:

Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" &

onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

It works really well. I've tried modifying it as follows, however,

so
that
it runs automatically when the workbook opens:

Private Sub Workbook_Open()
Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" &

onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

And now it is extremely volatile. Sometimes it adds just one control

when I
open the workbook, but more usually it does nothing at all.

Sometimes it
crashes while trying to open. Where have I gone wrong? (If it's

useful
to
know, I'm running this with Excel for Mac 2004 (11.2) on the Tiger

OS.)

If anyone can help, I'd be very appreciative!








  #7   Report Post  
Posted to microsoft.public.excel.misc
external usenet poster
 
Posts: 11,123
Default Volatile Macro for Adding Controls When Opening Workbook

LOL

--
Regards Ron de Bruin
http://www.rondebruin.nl



"Bob Phillips" wrote in message ...
Novel approach Ron, add them when you close the workbook, delete them when
you open it <vbg

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Ron de Bruin" wrote in message
...
From
http://www.rondebruin.nl/menuid.htm#Add

Keep the macro's in a normal module and in the Thisworkbook event only

call the macro

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Add_Controls
End Sub

Private Sub Workbook_Open()
Call Delete_Controls
End Sub


--
Regards Ron de Bruin
http://www.rondebruin.nl



"Wuddus" wrote in message

...
A helpful group member here gave me the following macro, which adds three
selections to the pop-up menu which appears when you right-click on the
spreadsheet:

Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

It works really well. I've tried modifying it as follows, however, so

that
it runs automatically when the workbook opens:

Private Sub Workbook_Open()
Sub Add_Controls()
Dim i As Long
Dim onaction_names As Variant
Dim caption_names As Variant
onaction_names = Array("macro1", "macro2", "macro3")
caption_names = Array("caption 1", "caption 2", "caption 3")
With Application.CommandBars("Cell")
For i = LBound(onaction_names) To UBound(onaction_names)
With .Controls.Add(Type:=msoControlButton)
.OnAction = ThisWorkbook.Name & "!" & onaction_names(i)
.Caption = caption_names(i)
End With
Next i
End With
End Sub

And now it is extremely volatile. Sometimes it adds just one control

when I
open the workbook, but more usually it does nothing at all. Sometimes it
crashes while trying to open. Where have I gone wrong? (If it's useful

to
know, I'm running this with Excel for Mac 2004 (11.2) on the Tiger OS.)

If anyone can help, I'd be very appreciative!







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
Assign macro name to menu command w/o using workbook name Blight_Pete Excel Discussion (Misc queries) 0 August 3rd 06 10:48 PM
Macro to copy data into another workbook yukon_phil Excel Discussion (Misc queries) 0 July 26th 06 05:29 PM
VBA Macro cannot see hidden workbook andjbird via OfficeKB.com Excel Discussion (Misc queries) 0 July 26th 06 03:38 PM
Macro or OLE method to insert worksheet from template workbook Lyndon Rickards Excel Discussion (Misc queries) 0 January 30th 06 08:46 PM
How turn off macro security question for workbook with no marcos? Dewy Cheatum & Howe Excel Discussion (Misc queries) 2 December 9th 05 10:14 PM


All times are GMT +1. The time now is 07:25 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"