Update in 2021

It may not be VBA anyone but I still stand by my original advice:

Excel formulas, the world’s most popular programming language, is now Turing-complete. Go check it out! - Satya Nadella - Microsoft CEO

Original Post

I just got asked a classic question from a friend: “I’m thinking of learning a programming language. Which one do you recommend?”. Instead of recommending JavaScript, which is my normal response, I recommended VBA and Excel. Let me explain why. Please tweet me if you can: i). recommend a good learning resource or ii). If you think it was terrible advice (to the extent that I should retract it).

For the record, I’ve never written a Macro or VBA but I (think I) know that the capability is bundled with every version of Excel and if used well, can be extremely powerful.

The principle reason I made the recommendation is that for someone to self-teach themselves something, they must be passionate about the end product. If you are not, you will give up halfway and will have just wasted a vast amount of time. The OP is non-technical and will spend the next few years on the grad scheme of a FTSE 100 company. He will be sandboxed by corporate IT and I don’t believe he is interested enough in generic web or mobile development on his personal device.

I’m sure the company that the OP will work at will have the latest ERP/CRM/ECM SaaS products but the reality is someone somewhere will build a spreadsheet and send it to a colleague via email. So much corporate data and knowledge exists in spreadsheets and even if finance isn’t the OPs role at all, becoming a spreadsheet ninja will pay huge dividends. It’s also inevitable, as an intern/junior employee, they will be tasked with a highly repetitive boring task, which will involve a spreadsheet. Automating these tasks will look good or just give them some slack time they can use to catch up other tasks.

Note. I hate spreadsheets and email and have studied the ERP space in the past and would love to eradicate them.

What can VBA do? Honestly I’m not really sure. It can clearly be packaged as Macros and be initiated by triggers. I guess it can do everything a cell formula can do but in a procedural manner. You can build controls to build user interfaces to abstract away manipulating cells. I’ve seen spreadsheets in the wild that submit data to web services or wrap themselves in an email for sending. I’ve used add-ons such as Quandl for Excel, which although doesn’t provide VBA objects, can still be evaluated as formula in VBA. Excel can connect to databases and execute SQL.

I also understand that VBA can allow WebObjects, which allow JavaScript to manipulate the parent spreadsheet. Therefore if you wish to dip your toe into web development you can do so via Excel!

I’m sure recommending VBA in 2018 isn’t the best start to a programming career but if the OP engages with “programming in general” and creates some “usable beasts [of a spreadsheet app]” [Ed. “spreadsheet app” - you’re joking right], instead of “trivial contrived exercises” they will be in a better position than someone that build a web/mobile app once. The terrible habits that they will pick up can be beaten out of them at a future date. Surely it’s better to have habits than no opinion at all.