21

I've seen posts showing answers which use VBA (Visual Basic for Applications) code/macros, however, I've also noted additional comments afterwards about how to use the VBA (how to implement and execute it). I'm hoping this will help just to get the code executed.

So, my question is:

I have some VBA code. How do I add VBA to my MS Excel or Word or Outlook project?

  • 1
    I'm attempting to create a canonical question. Feel free to add any other questions that I can reference/we can close, add tags, or edit either the question or answer to improve on it, or to post answers. – Dave Aug 22 '14 at 14:23
  • Related: superuser.com/q/794590/346288 - simple "kickstart" for debugging VBA code. – Hannu Jan 1 at 10:37
19

To open the VBA editor in any Microsoft Office product1, press Alt+F11.

Next, you need to determine how you want your VBA to be implemented. Do you want it to be triggered by some event in the software, such as the file being saved or the selection on the spreadsheet being changed? Or do you want to be able to execute the code yourself whenever you like?

If the former, take a look at the Project Explorer and find the project associated with the file you are currently working on.

If you want your code to be triggered by an event associated with a particular sheet (e.g., the code should run every time a value changes on Sheet1), you should double click that specific sheet object listed in the Project Explorer. This will open a text box where you can paste the code. If the event is associated with the entire workbook instead of a particular sheet (e.g., the code should run when the workbook is saved), double click the ThisWorkbook object in the Project Explorer.

If however, you do not want your code to be triggered by an event, you will want to place the code in a module. If there is other code in the document or workbook, say from a recorded macro, it will appear in a module. If there is an existing module, in most cases you will want to paste your code into the same module below any existing code. Existing modules will be listed in the Project Explorer.

If no module exists, you will need to insert a new one. To do this, choose Module from the Insert drop-down menu in the VBA editor window. This will insert a new module and display a text window inside the editor window. Paste your code there.

If you want to execute the code in a module, you have a few options. One is to run the code from the VBA editor window. You may simply place the cursor somewhere in the code you want to run and press F5, or click the “play” icon — green triangle pointing to the right (Run) button in the toolbar below the menu bar, to execute the code.

Another option is use the Macros dialog box.  To open it, do one of the following:

  • on the View tab of the ribbon, in the Macros pane (far right), click the Macros button
  • on the Developer tab, in the Code pane (far left), click the Macros button
  • press Alt+F8

The dialog box looks like this:

enter image description here

In the example above, you can run YourCode by

  • selecting it from the list and then clicking Run, or
  • selecting it from the list and double clicking it.

______
1 According to Can I use VBA in Excel 2010 Starter Edition?, you can't use VBA in Excel 2010 Starter Edition.

4

These steps are done using Office 2010 (except where noted otherwise) but should be similar enough for 2007 and 2013 as well. I'm doing it with Excel but the differences should be subtle.

The first step is to add the Developer tab to the ribbon.

In Office 2007,

  1. Click “Office Menu” -> “(Program) Options”.  (“Office Menu” refers to the Office button button in the top left corner.) This brings up a menu that has an “Excel Options”, “Word Options”, etc., button at the bottom.

  2. In the options dialog box, check “Show Developer tab in the Ribbon”: Office menu and click “OK”.

  3. Your new “Developer” tab should be showing.

In Office 2010 and 2013,

  1. Click File -> Options.

  2. Choose Customize Ribbon.

  3. On the right side, find Developer and check the box. Click OK.

  4. Your new tab should be showing, click on it and then click on Visual Basic.

A daunting screen is shown, which is the VBA code editing window.

Side note: You can also open the VBA code editing window by using the Alt+F11 keyboard shortcut (even if the Developer tab is not showing).

Inside the code editing window, on the left side you should have a pane called Project-VBAProject. In this, under the Microsoft Excel Objects (this name is different depending on which program (Word, Outlook, etc.) you are using) is a 'thing' called ThisWorkbook. Double click on ThisWorkbook

In this example, we'll use the following code.

sub WarnMeOfDanger()
   MsgBox "Argh, a dragon is behind you!"
end sub 

All the above does is show open a dialog box to show a message on-screen.

Copy the code, and paste it into the white sheet in the VBA code editing window.

Now, at the top of the VBA code editor window, click the green play button and you should see a message.

So, every time you want to run the code, return to this screen and press play!

However, you may prefer to add your own button. If you want to add a button then, first, note the first line of the code has WarnMeOfDanger(). This is actually the name of our 'subroutine'. We'll remember this for later. Now, simply close the Window you've been using (the code is automatically saved).

Still in the Developer ribbon, click on Insert, and choose the first item, which is a button. Your mouse cursor becomes a little cross (not angry, I mean its appearance). Draw the size of the button. A new window appears, and it should show us the option to assign the button to a function. In this case, we should see something like ThisWorkbook.WarnMeOfDanger. Click on this and click OK.

Now, if you press your new button, the message will show. Right-click the button to get options to move it, change the text, resize etc.

  • Question and answer by the same person? Strange....... – Prasanna Aug 22 '14 at 14:23
  • 2
    @Prasanna, when you ask a question, you have the option to answer it straight away. Remember, it's a Q&A site, so as long as it's relevant and useful, I think it's accepted. There are a few of these around. – Dave Aug 22 '14 at 14:29
  • I didn't know that until now. Thanks for the information – Prasanna Aug 22 '14 at 14:31
  • 2
    You can replace the first several steps to access the code window with a simple "Alt+F11". :) – Ƭᴇcʜιᴇ007 Aug 22 '14 at 14:42
  • @Ƭᴇcʜιᴇ007, feel free to edit away :) +1 – Dave Aug 22 '14 at 14:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.