Page 1 of 3
Chapter 1 of Automating Excel
When working with an Excel spreadsheet becomes repetitive you need a macro to automate the task - and for this you need VBA.
You can do a lot with Excel simply using formulas but there comes a time when you notice that you are doing a standard job involving moving or sorting data and you can't find an easy way of reducing it to a set of formulas. Sometimes it is just easier to write a program to automate the task and Excel has an easy-to-use programming language built into all versions, VBA - Visual Basic for Applications.
VBA is derived from Visual Basic 6 which was the most used programming language in the world until it was phased out when Microsoft introduced .NET and its associated languages.
Today VBA is the last outpost of classic Visual Basic and it is very suited to getting jobs done quickly and easily. What is isn't so good at is building big and sophisticated applications, but as a way of automating Excel and building Excel-based applications it is very good indeed. You will also find VBA within other Office applications and the details of the language hardly differ.
The same is true for different versions of Excel - but what does differ is how you gain access to the facility. Over time VBA has been removed from the main menus and been converted into an option to save beginners from being confused or intimidated by it.
For the screen dumps we are going to use Excel 2010 but the all of the earlier versions of Excel work in much the same way once you get to actually writing a program.
So open a copy of Excel and let's get started.
Step Zero - enabling VBA
It is a long tradition in programming that the first program you write when learning a new language is “Hello World”.
All this program does is to display the message on the screen for you to see. This may seem trivial but it ensures that you know how to start writing a program and how to run a program without worrying you too much about the difficulties of the actual program.
If you are using Excel 2010 then your first problem is enabling VBA. Because spreadsheets that contain programs can be a security risk VBA is disabled in all spreadsheets by default. For historical reasons VBA programs are also known as "macros" and you will find that a lot of the menu options and help files refer to macros.
To enable VBA you have to use the File, Options and select Customise the Ribbon . You then have tick the Developer box to allow the Developer icon to appear.
This isn't quite enough because you also have to allow the Excel to run programs included with spreadsheets. To do this you use the File, Options command again but this time select the Trust Center and the Trust Center Settings . Select Macro settings and finally select enable all macros.
You should now be able to see the Developer tab in the ribbon - if not you haven't performed the first of the tasks and if you can't run a VBA program then you haven't successfully configured the Trust center.
You write a VBA program not in a standard worksheet but in a specially inserted workbook page called a module.To work with a module you have to be in the VBA editor. How you open the VBA editor depends on the version of Excel you are running. Early version tend to use Tools, Macro, Visual Basic Editor. Excel 2010 has a Visual Basic Editor icon in the Developer tab.
Once you actually get to the Visual Basic Editor everything looks the same, no matter what version of Excel you are working with.
To insert a module you use the command Insert,Macro,Module.
Step Two - Entering text
A new module looks like a blank sheet of paper - which is more or less what it is. Each module you create is given a default name - Module1, Module2 and so on - but you can rename it quite easily by typing a new name into the Properties box at the bottom left.
You may also notice that a new toolbar has appeared at the top - it looks like the controls on a VCR. Don’t worry about this for the moment; what it does will be explained very soon.
The key thing to understand is that a module doesn’t behave at all like a spreadsheet. It doesn’t have cells and can’t work out formulas. It behaves more like a simple word processor.
If you start typing you will find that you can enter lines of text and edit them using copy, cut and paste and the backspace key in the usual way. When you save the workbook the module is saved along with all of the other pages and loaded again. If you wanted to you could just use a module for making notes but if you do you will find that it complains about what you type. This is a word processor that expects you to type VBA commands and if you type anything else it complains that you have made a mistake.