Learn from the Wise Owl VBA guru!
Trying to learn to write VBA macros in Excel? Our Andrew Gould has packed most of what he knows about VBA into a single, must-have book:
Over 340 pages of VBA goodness!
Read on to discover why this is the best book you can buy if you're teaching yourself to program in VBA in Excel (you'll also find out how to purchase it).
If you don't care about the details and you just want to purchase a copy you can do so here!
About the author
Andrew is uniquely well-placed to write this book. Not only does he have an encyclopaedic knowledge of VBA (memorably, he rewrote the Flappy Bird app entirely in VBA - check out Flappy Owl), but he's also not bad at passing this knowledge on, in the form of classroom training, videos and blogs:
|Classroom||Andrew has run 176 classroom courses on VBA in the last 10 years, training 705 people in total.|
|Videos||Author of 76 separate videos on VBA and 20 on VBA user forms, all viewable through this site.|
|Blogs||Co-author (with me, as it happens) of an entire VBA tutorial (also viewable on this site).|
Any computer book requires two ingredients, rarely found in the same person:
The recipe for a perfect computer book: mix expertise with the ability to pass it on.
Wise Owl are uniquely well-placed to offer this book on learning VBA in Excel (and who knows, there may even be others in the future).
About the book
Here's the front cover of our Introduction to Excel VBA book:
The book offers an introduction to writing macros in Visual Basic for Applications within Excel (although as you'll see if you scroll down, it actually goes well beyond an introduction).
Here are the contents:
|1||The Visual Basic Editor||6|
|2||Writing Simple VBA Code||14|
|3||Saving and Opening Files||6|
|4||Running VBA Code||8|
|5||Basic User Interfaces||8|
|6||Workbooks and Worksheets||10|
|7||Working With Ranges||14|
|8||Colours in VBA||2|
|11||Variables and Data Types||12|
|12||Constants and Enumerations||4|
|13||Working with Data||10|
|15||For Next Loops||4|
|17||How VBA Works||12|
|18||For Each Loops||6|
|19||Modular Code, Parameters and Functions||10|
|25||Creating User Forms||14|
|26||Running User Forms||4|
|27||Adding Code to Forms||12|
|28||Advanced Form Controls||16|
|29||Controlling Other Applications||16|
|31||Connecting to Databases||14|
|32||Files and Folders||8|
|33||File Dialog Boxes||6|
|35||Collections and Dictionaries||12|
|36||VBA Quick Reference||6|
The book comes with a full table of contents at the beginning and index at the end, and is printed on A4 paper, double-sided.
How to buy the book
If you like what you've read so far, you can purchase Introduction to Excel VBA here.
Lulu is a website which prints books on demand, and ships them anywhere in the world. If you're based in the UK and ordering more than 10 copies, you can also contact us directly about purchasing the book.
One final thing ...
To get the table above, I needed to go through all of the Word chapters stored on the Wise Owl network, getting the page number and chapter title for each. I could have done this manually, but it would have taken ages and I'd have made lots of errors. So instead I wrote a VBA program - and here it is:
'to do with files and folders
Dim fso As New FileSystemObject
Dim fol As Folder
Dim ChapterFile As File
Dim doc As Document
'chapter and page numbering
Dim ChapterNumber As Integer
Dim PageCount As Integer
Dim PageNumber As Integer
'other variables used
Dim TableText As String
Dim ChapterName As String
'initially we have no chapters and no pages
TableText = ""
PageCount = 0
ChapterNumber = 0
'get location of files on Wise Owl drive (part omitted)
Set fol = fso.GetFolder("Q:\...")
'for each file
For Each ChapterFile In fol.Files
'check if it is a Word document
If Right(LCase(ChapterFile.Name), 5) = ".docx" Then
'get the chapter name
ChapterName = Left(ChapterName, InStr(1, ChapterName, ".") - 1)
'open the document and get page number at end
Set doc = Documents.Open(ChapterFile.Path)
PageNumber = Selection.Information(wdActiveEndPageNumber)
'close it back down again
'add on this chapter number (some HTML omitted from string)
TableText = TableText & _
" HTML here " & ChapterNumber & " HTML here " & _
ChapterName & " HTML here " & PageNumber & _
" HTML here " & vbCrLf
'increase page count
PageCount = PageCount + PageNumber
'finished - show result in immediate window
I've only included this to show what's possible. The code above won't run on its own, and is not meant in any way to be part of a tutorial, but it does show one reason why VBA is useful to learn!