Ah, VBA, or Visual Basic for Applications - the programming language that has been clinging on to life in Microsoft Office since the 1990s like a barnacle on the side of a ship. With its roots in the dark ages of programming, VBA stubbornly endures, whether or not you feel like it's necessarily a good thing.
VBA was designed as an extension to Visual Basic (VB), the poster child for user-friendly programming languages back in the day. VBA allowed users to automate tasks in applications like Excel, Word, and Access, effectively turning these applications into multi-purpose platforms. It was wildly popular in its heyday, being hailed as a "killer app" that even non-programmers could use with ease.
In fairness, VBA made automation possible for many people who would have otherwise never ventured into the world of programming. And despite newer, shinier languages stealing the spotlight, VBA refuses to leave the stage—even though Microsoft stopped actively developing it in 2008.
VBA's syntax is a throwback to simpler times when error handling meant putting "On Error Resume Next" at the top of your code. The syntax is reminiscent of old English: verbose and often unintuitive.
Here's an example of VBA's poetic expressiveness:
Sub CreateNewWorkbook() Dim newWorkbook As Workbook Set newWorkbook = Workbooks.Add newWorkbook.SaveAs "C:\Users\Username\Documents\NewWorkbook.xlsx" newWorkbook.Close End Sub
Ah, there's nothing quite like having to use the
Set keyword to assign an object reference or declaring variables with the
Dim keyword. VBA is truly a language that defies the notion "less is more."
Believe it or not, one of VBA's strengths is its object model. You might think that's a sarcastic statement, but hear me out. The object model was designed in such a way that it's deeply integrated into Office applications. This allows VBA to access and control almost every aspect of the application's functionality.
But, as befits a language with the resilience of a 90s sitcom, VBA's object model can be convoluted and confusing. A seemingly simple task, such as selecting a cell in Excel, requires you to navigate the complex hierarchy of objects:
Or if you prefer a more verbose approach:
Yes, in VBA, even referencing a single cell can feel like playing a game of "Six Degrees of Kevin Bacon."
VBA is so deeply entrenched in Office applications that Microsoft simply can't get rid of it. Many companies still rely on legacy VBA code to perform critical tasks, and there's no denying that the language has served them well over the years.
VBA doesn't make it easy to love it. It's an old language that has fallen behind the times, but it refuses to go quietly into the night. Like your favorite washed-up actor, VBA clings to relevance by virtue of its history rather than its current prowess.
But that doesn't mean we can't appreciate the good that it has done. Many a person has wandered into the programming realm thanks to VBA, and countless businesses have saved time and money due to its automation capabilities.
So, the next time you find yourself wrestling with VBA's antiquated syntax or wearily navigating its labyrinthine object model, just remember: it's okay to be cynical. It's part of VBA's nostalgic charm.
Grok.foo is a collection of articles on a variety of technology and programming articles assembled by James Padolsey. Enjoy! And please share! And if you feel like you can donate here so I can create more free content for you.