Create Do While/Until loops; understand condition placement on Do vs Loop lines
Declare variables & types; Option Explicit; module-level and Public scope; object variables
Create Functions with parameters, return values, booleans, and returned objects using Set
Use MsgBox/InputBox & Application.InputBox; buttons/icons/title; validate dates & types
Work with collections (Workbooks/Worksheets), refer by name/index, loop For/For Each
Handle errors with On Error, Resume Next, disabling handlers, and resuming at a line
About the free online course
Stop repeating the same Excel work day after day. With VBA, you can turn clicks, copy-pastes, and manual checks into fast, reliable macros that run in seconds. This free online course is designed for beginners who want to learn how to automate spreadsheets in a structured, practical way, even if you have never written code before.
You will start by setting up the right environment to write code in Excel, then build simple procedures that you can save and run whenever you need them. From there, you will develop the habits that make VBA feel approachable: stepping through code line by line, using breakpoints, and understanding what different errors mean so you can fix problems calmly instead of guessing. As you practice, you will see how small improvements in readability and structure quickly lead to macros that are easier to maintain and share.
Throughout the training, the focus stays on the actions Excel users care about most: selecting and manipulating ranges, moving across worksheets and workbooks, building dynamic lists, and using properties like End and Offset to work with data that changes every day. You will also learn how to trigger your automations smoothly with buttons, shapes, and keyboard shortcuts so your tools feel like part of the workbook instead of hidden code.
As your confidence grows, you will add real logic to your macros using conditional statements and looping patterns that help you validate inputs, avoid blank records, and process data consistently. You will learn to work with variables, choose the right data types, and control scope so your code stays predictable. You will also create reusable procedures with parameters, and write functions when you need results returned to your worksheet or your program flow.
Finally, you will make your automations more user-friendly with message boxes and input boxes, including safer ways to capture numbers, dates, and ranges without frustrating runtime errors. You will also practice working with Excel objects and collections, looping through worksheets or charts efficiently, and handling errors in a professional way so your macros fail gracefully. By the end, you will be able to build practical Excel VBA solutions that save time, reduce mistakes, and make your spreadsheets far more powerful.
Course content
Video class: Excel VBA Online Course - 1.1.1 Preparing to Write Code05m
Exercise: Which action creates the most common container used to store VBA code in an Excel workbook?
Video class: Excel VBA Online Course - 1.1.2 Writing a Basic Procedure11m
Video class: Excel VBA Online Course - 1.1.3 Saving Your Code04m
Exercise: Which file type should you choose to save a workbook that contains VBA code so the macros are kept?
Video class: Excel VBA Online Course - 1.1.4 Running a Procedure02m
Video class: Excel VBA Online Course - 1.1.5 Dealing with Problems08m
Exercise: Which type of VBA error occurs only when the code is actually running and can be investigated by clicking the Debug button to highlight the problem line in yellow?
Video class: Excel VBA Online Course - 1.2.1 Stepping Through Code05m
Video class: Excel VBA Online Course - 1.2.2 Using Breakpoints03m
Exercise: Which keyboard shortcut clears all breakpoints in the VBA editor?
Video class: Excel VBA Online Course - 1.3.1 Worksheet Buttons04m
Video class: Excel VBA Online Course - 1.3.2 Keyboard Shortcuts02m
Exercise: How do you start assigning a keyboard shortcut to a VBA subroutine in Excel?
Video class: Excel VBA Online Course - 1.3.3 Shapes as Buttons03m
Video class: Excel VBA Online Course - 1.4.1 Making Things Happen11m
Exercise: Which sentence structure correctly changes a property of an object in VBA?
Video class: Excel VBA Online Course - 1.4.2 Parameters and Arguments10m
Video class: Excel VBA Online Course - 1.4.3 Using Parentheses12m
Exercise: In VBA, when should you put parentheses around an argument list for a method?
Video class: Excel VBA Online Course - 1.4.4 Calling Procedures08m
Video class: Excel VBA Online Course - 1.4.5 Getting Help08m
Exercise: In the VBA editor, what is the quickest way to open the help page for the keyword your cursor is on (e.g., Cells.Find)?
Video class: Excel VBA Online Course - 1.4.6 The With Statement03m
Video class: Excel VBA Online Course - 1.4.7 Recording Macros07m
Exercise: When starting to record a macro, which choice makes the macro available whenever Excel opens?
Video class: Excel VBA Online Course - 2.1.1 Selecting Single Cells06m
Video class: Excel VBA Online Course - 4.1.5 Public Variables06m
Exercise: After moving a subroutine into a different module, how can you make variables like WeightInKilograms, HeightInMeters, and BMI accessible to procedures in all modules?
Exercise: In an Excel VBA InputBox, which Type value forces the user to enter/select a valid cell reference (Range) instead of typing arbitrary text?
Video class: Excel VBA Online Course - 5.4.8 Returning a Range Object04m
Video class: Excel VBA Online Course - 6.1.1 Collections in Excel09m
Exercise: In VBA, what does using Workbooks.Count return?
Video class: Excel VBA Online Course - 6.1.2 Referring to Objects by Name08m
Video class: Excel VBA Online Course - 6.1.3 Referring to Objects by Number07m
Exercise: In VBA, what does Worksheets(3) refer to in a workbook?
Video class: Excel VBA Online Course - 6.2.1 Basic For Next Loops06m
Video class: Excel VBA Online Course - 6.2.2 Counting Through a Collection04m
Exercise: Which VBA technique lets you modify every chart in a workbook without repeating the same code for each one?
Video class: Excel VBA Online Course - 6.2.3 Counting Through Cells09m
Video class: Excel VBA Online Course - 6.3.1 Basic For Each Loops06m
Exercise: In a VBA For Each loop that processes every worksheet in the current workbook, which statement correctly specifies the collection to loop through?
Video class: Excel VBA Online Course - 6.3.2 Looping Through a Range05m
Video class: Excel VBA Online Course - 6.3.3 Nesting For Each Loops04m
Exercise: Why is the range referenced as WS.Range("A2:A5") inside the loop?
Video class: Excel VBA Online Course - 7.1.1 Ignoring Errors03m
Video class: Excel VBA Online Course - 7.1.2 Disabling an Error Handler05m
Exercise: How can you disable a custom error handler after ignoring a specific error in VBA?