Excel Macros (VBA)
For beginners, intermediate and advanced users
VBA is the programming language used within Excel to develop macros
It stands for Visual Basic for Applications
For users of Excel 2007:
Installing the Visual Basic Editor in Excel from your Office CD
Macros in Excel 2007 and 2010
Create and test your first Excel macro for FREE
Discover how powerful and simple macros can be
Table of Contents
for this website and
the downloadable course on Excel macros
The Visual Basic Editor is the user friendly program that you will use to talk with Excel. In it you can create your VBA procedures (macros) and userforms. You will then be able to modify and test these components easily step by step in the VBE.
The Project Window lists all your open projects with their sheets, modules and forms. In the Project Window you will add modules and create forms. When you select one of the components its properties will show in the Properties Window and the VBA code that you have created for the selected component will appear in the Code Window.
The Properties Window shows you the properties of the object that is selected in the Project Window (sheet, module) or the properties of the control (command button, text box, list box, etc...) that is selected on the forms. You will use this window often when you start developing forms (userforms).
All the action happens in the Code Window. In this large window you or the Macro Recorder will write macros. You will also test and fine tune all your macros in the Code Window.
In this lesson you will learn how to create a new VBA procedure. You will organize sets of sentences to tell Excel what to do. You can key them in or copy/paste them from recorded macros, from one of your old macros or from the Internet where you will find millions of free macros.
When you develop macros in Excel you spend 20% of your time analyzing the project, 15% writing your VBA procedures and 65% testing and fine tuning them. Split your screen, use the F8* key and you can see what your procedure does in Excel step by step. Back up, correct and re-test.
The Macro Recorder is the best teacher and it will be a great assistant (writing code for you) even when you become an expert at programming in VBA. In this lesson you will learn about the Macro Recorder and you will try it. You will also run and test the macro that you have recorded.
There is plenty of help and assistance available within Excel when you develop macros. As you have discovered in the previous lesson the Macro Recorder is a great teacher and assistant. In this lesson we investigate the two other sources of assistance within the Visual Basic Editor of Excel: the Help Files and the Object Browser.
Once you have developed your macros you need to trigger them so that they start. The trigger is called an event. The most frequently used event is the click on a button. In this lesson you will learn how to add a button to your sheet and how to connect it to your macro. You will also learn how to start a macro by opening a workbook (also called spreadsheet or Excel file), by closing a workbook and even by changing the value
of a cell.
You cannot harm your computer with macros so be bold in experimenting with macros you will learn more and faster. In this lesson you will learn how to protect you code, your sheets and your workbooks.
Assembling VBA words into sentences is called coding. Here are interesting tips to make things easier when you start coding.
VBA tells you immediately when the code that you have written is wrong. When the logic is wrong or when the user gives a wrong answer these errors need to be handled. In this lesson you will learn the necessary vocabulary to deal with errors.
The Application is EXCEL itself. Add 15 new VBA words to your vocabulary like Application.Quit, Application.ScreenUpdating = False, Application.CutCopyMode=False and others .
Some people call them spreadsheets or Excel files VBA calls them workbooks. Here are other VBA words to add to your vocabulary. You will learn to work with ThisWorkbook (the workbook in which runs the macro) with many workbooks and even with all the workbooks in a directory.
There can be 256 sheets in a single workbook. In this lesson you will discover the vocabulary to move from one to the other, to copy/paste from one to the other, to add and delete worksheets and even go from the first to the last sheet of a workbook to do something on all of them. You will also learn how to copy the sheets into another workbooks or to transform a single sheet into a workbook.
In this lesson you will improve your VBA vocabulary with 40 some words to work within the worksheet. You will learn how to select a cell or a group of cells and how to count the rows and columns. You will learn how to change the value of a cell or insert a formula in it. The 5 VBA words that you will use the most moving around the sheets are Range, Select, Offset, Activecell and CurrentRegion. What you can do with these
5 words and tens of other important words is covered
in this lesson.
You will use message boxes or input boxes to communicate with the user. Through these pop-ups the user can supply bits of data or say " Yes, No, Ok, Cancel" and other short answers during the execution of a macro.
Excel offers you the most powerful database tools (sorting, filtering, etc...). With VBA these tools become even more powerful. You will learn how to use them with the data that you extract from large centralized databases (SAP, Oracle, EssBase, Access, etc..), from accounting and sales programs and with financial data that you can download from the Internet.
The variable is the concept that will launch your creativity and allow you to develop real programs in Excel. It will empower you to develop sophisticated programs and work extremely rapidly with very large sets of data. Before learning about variables you develop macros after you develop programs.
They are the KILL, the IF_THEN_ELSE_END IF, the SELECT-CASE, the DO_LOOP, the FOR_NEXT....
There are Excel functions and VBA functions. Three topics are covered in this lesson. You can use existing Excel functions within VBA or you can create brand new Excel functions with VBA and you can use VBA functions.
When you connect to outside sources of data (large databases, text files, other Excel workbooks, Access, etc.) the computer is using SQL (Structured Query Language) a specialized language to work with data. You can use Excel's functionalities to connect and extract data but you can also use directly the SQL language top extract data. It is the fastest way to access any external data.
With VBA for Excel you can develop VBA procedures (macros) to work within Excel while calling other Microsoft programs like Access, Notepad, Word, Project and even Windows.
You have used message boxes and input boxes to communicate with the user while the macro was running. When these tools are no longer sufficient you need to develop useforms.
In this lesson you will learn how to set the properties of the userform and you will develop code within the two important events that are " On Activate" and " On Close" .
The command button is the control where most of the code resides and everything happens when you " CLICK " on it.
Labels are just labels. You use them to describe functions and to share information with the user.
The user is now talking to you.There are very few userforms without text boxes. Text boxex having been created to handle text you need to discover how to use them with numbers, percentages, currencies, etc.
The combo box is the ultimate control. It is a drop-down list and you will learn how to develop sets of combo boxes where the choices offered in the second combo box depend on the choice made in the first one. They are called cascading combo boxes.
You will develop list boxes when you want to allow the user the possibility of multiple choices.
The " True/False" controls to be used as a group within a frame
You can test different values increasing them step by step until you find the right one and you do it with a spin button.
They are the controls to build catalogs and shopping carts.
VBA Macros in Excel
Up to Excel 2007 you didn't need to install the Visual Basic Editor if you wanted to develop macros (VBA procedures). In Excel 2007 you must specify that VBA be installed when you install Excel from the Office CD. See how to install Visual Basic for Application for Excel 2007.
In Excel 2010 this problem has been corrected and you do not need to install anything extra to work with macros. YOu might have to make the "Developer" ribbon visible by right clicking on the "Home" item of the menu bar and then selecting "Customize the ribbon..." and making sure that the "Developer" ribbon is checked.
In Excel 2007 and 2010 you save your spreadsheets that do not contain macros in .xlsx format and those with macros in .xlsm format. You can also select to save your spreadsheets in .xls format so that people who have not migrated to Excel 2007 or 2010 can open and use them.
All macros and VBA procedures developed in Excel 1997 to 2003 will work in Excel 2007 and 2010 except for a few minor changes:
- a function used only by advanced users " FileSearch" does not exist anymore. It can be easily replaced by " Dir"
that runs in Excel 2007, 2010 and in earlier versions of Excel.
- Advanced users of Excel 2007 and 2010 who import external data with or without SQL might want to add these two lines of code at the end of the refresh process:
- Use the macro recorder to discover the new syntax to cells' background, font colors, filtering and sorting data.
Nothing else has changed in Excel 2007 and 2010 as far as VBA and macros are concerned.
The macro recorder and the Visual Basic Editor are the same.
Back to the top of the page
The powerful functions, functionalities and macros that people used in Excel
1997 still work in Excel 2003, 2007 and 2010. Anything new that you learn about Excel will remain useful for years to come.
What has changed about theses functions, functionalities and macros is that they work much faster with every new version of Excel.
What has changed even more is the computer on your desk. It has changed dramatically.
- Your computer is hundreds of times faster and more powerful than in 1997.
- Your computer is also connected to multiple sources of data within your enterprise.
- Your computer is connected to data sources from around the world through the Internet.
Due to these changes to Excel, your computer and its network, Excel has become limitless as a data analysis and reporting program.
This website and the downloadable Tutorial on Excel Macros are divided in three sections:
Section 1: Excel Macros Programming: Lessons 1 to 10
This section is about recording, writing, modifying and testing macros in the Visual Basic Editor. You will also learn about security and discover "events" (an event is what starts the macro).
Section 2: Excel VBA Vocabulary: Lessons 11 to 23
Developing a macro is communicating with Excel and to do so you need to use a language called Visual Basic for Applications (VBA). In section 2 you will learn all the VBA vocabulary that is essential to work with business data (accounting, sales, production and others).
Section 3: Forms and Controls in VBA for Excel: Lessons 24 to 33
The userform is a small or large dialog window that you create and allows the user to submit values that will be used by your macros. To these userforms you will add controls (command buttons, text boxes, list boxes and others) and program them.
Rediscovering Excel's Functions and Formulas
Links to Other Resources on VBA