Tech or Treat! Write an article about your scariest tech disaster to win gadgets!Learn more


Call Excel subroutine from within a spreadsheet

Posted on 2011-09-04
Medium Priority
Last Modified: 2012-05-12
I've written a subroutine that performs some data manipulation on two spreadsheets within a workbook.  I can run this subroutine from the VBA window or from the developers tab in the ribbon, but the individual who is going to be using this spreadsheet does not have the developers tab displayed.

I'm not an Excel guy, so I need a recommendation on possible techniques for providing the user with a fool proof method of kicking off the subroutine, either from the ribbon or a control on one of the spreadsheets, or ???.
Question by:Dale Fye
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
  • 3
  • 2
  • 2
  • +2
LVL 35

Assisted Solution

Norie earned 800 total points
ID: 36480856
Well the easiest way would be to just add a command button on a worksheet.

Then you can call the subroutine from the button's click event.

How to do that exactly depends on how you add the button.

(You could actually add a shape if that would be easier/more user friendly).

Other methods would be:

1 Add to the ribbon, which isn't too straightforward.

2 Use some event of the worksheet to trigger the code.

Which of these to use and how exactly to use them depend quite a bit what the subroutine does.
LVL 81

Accepted Solution

byundt earned 1200 total points
ID: 36480898
Further to imnorie's suggestions:

To trigger a macro from a shape object:
1) Put a shape (or picture) on the worksheet
2) Right-click the shape and choose "Assign macro" from the resulting pop-up
3) Choose your macro

To trigger a macro from a Forms toolbar command button (my recommendation):
1) On the Developer tab, use the Insert menu item and choose a Form controls command button
2) Draw the button on the worksheet
3) You will be asked to assign the button to an existing macro. Choose the one you want to run.

To trigger a macro from an ActiveX toolbar command button:
1) On the Developer tab, use the Insert menu item and choose an ActiveX controls command button
2) Draw the button on the worksheet
3) Right-click the button and choose View Code
4) Call your macro from the Click event sub for the button
LVL 35

Expert Comment

ID: 36480916

I've seen a lot of recommendations of using forms over ActiveX but I've never really understood why.

I've always used ActiveX and never seem to have problems.

Probably just a hangup from other applications where you don't get the choice.

Have I been missing some big secret all these years?

PS Sorry ot bother you, just curious really.
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

LVL 93

Expert Comment

by:Patrick Matthews
ID: 36480942

I tend to avoid putting controls on the worksheet for aesthetic reasons.  If I have to put controls on the worksheet, I try to use only Forms controls, which seem to be much more stable.

The one tie a customer forced me to use ActiveX controls, I kept getting squirrely behavior in my listboxes: sizes would change, and font settings would change, for no reasons I could discern.  It was very, very discomfiting.

There is another method: the old Application.CommandBars object model still exists (Ribbon notwithstanding); if you use those older commands to add menu elements to the Worksheet Menu Bar, your menu items will appear in the Add-Ins tab of the Ribbon.  So far, all of my old menu code still works via that back door.

LVL 81

Expert Comment

ID: 36480950
I personally haven't had any problems with ActiveX controls, but zorvek claims to have seen more than his share.

I prefer the Forms command buttons because:
1) You may have multiple buttons that all call the same macro
2) The macro goes in a regular module sheet, meaning that Askers don't get confused by the need to put the code for an ActiveX button in the worksheet code pane
3) They are Macintosh compatible

I do use some of the other ActiveX controls (not command buttons) because of the greater flexibility offered. For example, ActiveX ComboBox controls return the user's choice directly (rather than through an index number like the Forms toolbar equivalent).

LVL 35

Expert Comment

ID: 36480967

I try and avoid it to, but I'm afraid I tend to jump to userforms probably more than is necessary.

Again probably just a habit.

I've heard and seen the resizing thing but for some reason I've never had major trouble with that.


1 Good point.

2 Another good point.

3 What's a Macintosh?:)


LVL 93

Expert Comment

by:Patrick Matthews
ID: 36480986
>>3 What's a Macintosh?:)

It is a delicious fruit, although truth be told I prefer the Fuji and Honey Crisp varieties :)
LVL 42

Expert Comment

ID: 36481465
The resizing issue is the only problem I've had.  I've stopped using ActiveX buttons, which previously was my default (for the reasons mentioned), though list objects (as you might imagine, given my articles) are great, to me.  Here's a tip for those "hard and fast" users of activex controls having resize issues - and its more of a "fix": http:/A_5315.html
LVL 48

Author Closing Comment

by:Dale Fye
ID: 36504382

I was able to put a command button on the form and do it that way.  Worked like a charm.

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

This tutorial explains how to create a series of drop-down lists that are dependent upon prior selections to guide (“force”) the user to make the correct selection and reduce data errors within Microsoft Excel. Excel 2010 was used for this tutorial;…
Access developers frequently have requirements to interact with Excel (import from or output to) in their applications.  You might be able to accomplish this with the TransferSpreadsheet and OutputTo methods, but in this series of articles I will di…
This Micro Tutorial will demonstrate the scrolling table in Microsoft Excel using the INDEX function.
This Micro Tutorial will demonstrate how to create pivot charts out of a data set. I also added a drop-down menu which allows to choose from different categories in the data set and the chart will automatically update.

647 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