My Top 10 Tips for Mastering VBA & Excel Macros [Part 5 of 5 – VBA Crash Course]

Share

Facebook
Twitter
LinkedIn

This article is part of our VBA Crash Course. Please read the rest of the articles in this series by clicking below links.

Top 10 Tips for Mastering VBA, Excel Macros - from Chandoo.org

  1. What is VBA & Writing your First VBA Macro in Excel
  2. Understanding Variables, Conditions & Loops in VBA
  3. Using Cells, Ranges & Other Objects in your Macros
  4. Putting it all together – Your First VBA Application using Excel
  5. My Top 10 Tips for Mastering VBA & Excel Macros

In the part 5 of our VBA Crash Course, let me share you my tips for mastering Excel VBA.

A warning before jumping in to the tips: I am not a VBA expert. I am a learner, just like you. I find VBA quite interesting language to learn and explore. These tips are based on what I have learned writing VBA (and VB code) in the last 12 years.

Tips for using & mastering VBA in short term:

#1 Think Thru before Coding

The best way to solve even a very complex problem is to think thru. Next time, when you are about to automate that report or clean some imported data using VBA, just write the logic down on a paper. See and understand various aspects of the problem. The solution becomes clear to you. It has worked for me and it works for you too.

Related: Building your First VBA Application using Excel

#2 Use the Recorder

Excel’s built in Macro recorder is a great way to learn about new objects and ways to deal with them. I use it all the time to record parts of my code and then customize the output. Just keep in mind that macro recorder does not produce the best or complete code all the time. But it gives you a damn good idea about how to write code for a set of actions.

Related: Introduction to Excel VBA & Writing your First Macro

#3 Use Immediate Window

Excel VBE has a powerful feature called as Immediate window. Think of this like a sandbox. You can write almost any VBA statements here and get quick results. For example, Open VBE (ALT+F11 in Excel) and go to Immediate window.

  1. Type ?Activecell.Value
  2. Press Enter
  3. And you will see the current cell’s value printed in immediate window

Here is a quick demo of immediate window.

Demo of Immediate Window - Excel VBA Crash Course

#4 Debug.Print is your Friend

There are 3 things you cannot avoid in life

  1. your 2 year old daughter thinking it would be fun to throw a stone on your car
  2. your baby boy running and sitting in your lap suddenly making the hot coffee spill on you
  3. and of course bugs in your code

Bug is a fancy name given to the situation when your code is not doing what it is supposed to do.

But why?!? Well, we don’t know why unless we examine. And this is where Debug.Print can come handy. In below example, you would see the values of all tasks in the immediate window as your program runs.

Example on Debug.Print in VBA

#5 There is a method for that!

Just like Apple says There is an App for that!, may be Microsoft should say There is a Method for that! about VBA. I say this because VBA comes with a lot of methods and functions to do lots of things. If you are thinking of writing your own code to reverse some text, split something based on a delimiter, find the intersection of 2 ranges or run something after 10 seconds, may be you should before writing your code. Because, my dear, there is a method for that.

Whenever you feel like you are writing code for a problem that is already solved several times, chances are there is some built-in method or object for that. So just search.

Tips for Using & Mastering VBA in Long-term

While the above tips are good for solving your immediate problems, we should always aim for continuous improvement. Here are my top tips for keeping your VBA in shape.

#6 Break Your Work in to Smaller Chunks

No matter how complex your work situation or problem might be, chances are, it is made up of several smaller problems. So break things in to smaller chunks. This coding technique is called as modularization. Modularization has several advantages:

  • Reuse: Once you break a big program to smaller parts, you can reuse a smaller part in several places or in other projects.
  • Testable: Smaller code fragments are easy to test and debug.
  • Maintainable: You can maintain smaller parts easily. You can upgrade them once you get a better version of Excel without breaking much.

#7 Build Iteratively

Rome is not built in one day, so is your buildRome() macro. Whenever you are attempting to automate a whole department’s work, take a step back and see what is the smallest (but most useful) feature you can have. Implement it and then add new features iteratively. That way, your turn-around time is improved, you look pretty in front of your boss and you feel in control of things.

Iterative development also lets you stop whenever you want and you would still have some working piece of code.

#8 Keep a Good Reference Handy

If you are going to use VBA quite often, then invest in a good reference. I suggest John Walkenbach’s Excel 2010 Power Programming if you are looking for one. Good reference books have lots of information and tips buried in them. For example, I keep Excel 2010 Power Programming book on my desk all the time and refer to it whenever I feel like not doing any work. I always learn something new.

#9 Take up Challenges

“Computers are like bicycles for our mind” said Steve Jobs. I am not sure if hours I put on facebook, twitter and gmail are keeping my mind fit. But any time I invest on programming is worth every second. I feel very sharp, excited and stoked when I solve a tricky problem using a computer program (be it VBA, an Excel Formula or php or anything else).

I think if you want to be good in VBA or Excel, then take up challenging work. Try to automate a report that you (or your team) produce using VBA, Try to simplify a formula or improve a chart.

If you are looking for fresh challenges, then look at our forums. We get dozens of interesting questions everyday.

#10 Use VBA only when you need it

Once you start learning VBA, it is natural to feel excited about the possibilities you have. But keep in mind that overusing it can complicate your work.

My suggestion: Use Excel’s native features as much as possible. Excel has several built in features to solve various day to day problems (conditional formatting, pivot tables, formulas, data validation, form controls to name a few). Only when you feel that there is no easy way to use Excel alone to solve a problem, go for VBA.

Example: Recently, I showed you all how to split text on new line using VBA. I did that because I thought there was no way to do it using Excel’s built in text-to-columns utility. Well, I was wrong. As Debra proved in the comments,

Chandoo, if you want to do this in the Text To Columns dialog box,

Select Delimited, then check “Other”
In the box beside Other, press the Alt key, and type (using the number keypad): 0010

That should separate the text on the line break character.

So if you feel like there is no way to do something in Excel without resorting to VBA, well, just keep looking, because there might be a way.

What are your Tips for Learning & Mastering VBA?

Its your turn now. What are your top tips for mastering VBA? Please share using comments because I and many of our readers want to learn. Go ahead and post.

Join Our VBA Classes

We run an online VBA (Macros) Class to make you awesome. This class offers 20+ hours of video content on all aspects of VBA – right from basics to advanced stuff. You can watch the lessons anytime and learn at your own pace. Each lesson offers a download workbook with sample code. If you are interested to learn VBA and become a master in it, please consider joining this course.

Click here to learn more and Join our VBA program.

Thanks

This post concludes our series on VBA Crash Course. I hope you enjoyed these 5 articles and learned something new. I really enjoyed writing this series. Thank you so much for your comments and support.

For more about VBA & Macros, consider enrolling in our online course.

Facebook
Twitter
LinkedIn

Share this tip with your colleagues

Excel and Power BI tips - Chandoo.org Newsletter

Get FREE Excel + Power BI Tips

Simple, fun and useful emails, once per week.

Learn & be awesome.

Welcome to Chandoo.org

Thank you so much for visiting. My aim is to make you awesome in Excel & Power BI. I do this by sharing videos, tips, examples and downloads on this website. There are more than 1,000 pages with all things Excel, Power BI, Dashboards & VBA here. Go ahead and spend few minutes to be AWESOME.

Read my storyFREE Excel tips book

Overall I learned a lot and I thought you did a great job of explaining how to do things. This will definitely elevate my reporting in the future.
Rebekah S
Reporting Analyst
Excel formula list - 100+ examples and howto guide for you

From simple to complex, there is a formula for every occasion. Check out the list now.

Calendars, invoices, trackers and much more. All free, fun and fantastic.

Advanced Pivot Table tricks

Power Query, Data model, DAX, Filters, Slicers, Conditional formats and beautiful charts. It's all here.

Still on fence about Power BI? In this getting started guide, learn what is Power BI, how to get it and how to create your first report from scratch.

28 Responses to “2010 Calendar – Excel Template [Downloads]”

  1. [...] Download and print the calendars today. You can add notes to individual dates or complete … [...] Uni Ego / Free 2010 Calendar – Download and Print Year 2010 Calendar today [...]

  2. William says:

    Afternoon,

    I have one similar calander that I added conditional formatting to so that I could highlight any planned factory holidays. I think i "borrowed" the formula from another calander so I won't post it here.

    I also added week numbers to it using the formula =WEEKNUM(MAX(C6:I6)) Where C6:I6 is the range of dates in that give week. It works fine on most of the months but return strange values on other months (Week 6 in October?) I can't see any logic behind why it does this.
    Any suggestions for an alternative formula to give the week numbers?

    Regards,

    William

  3. Miguel says:

    Hi Chandoo,
    I've added a new feature on your spreadsheet.
    This control can be useful for all the sheets where you need to check dates.

    Cheers

    http://cid-69a78592a23a8438.skydrive.live.com/self.aspx/.Public/2010-calendar%5E_Miguel.xls

  4. Nimesh says:

    Hi Chandoo,

    Nice calendar.
    Till now whichever calendar I saw in Excel, it contained only the outline sheet.
    Good to see monthly views and the mini view too.
    Liked the mini view much. 🙂

    -Nimesh

  5. Chandoo says:

    @William: This weeknum may be because the input dates to max are not properly formatting as excel dates.

    Good tip on the conditional formatting and holidays btw...

    @Migueal: Now that is super awesome. This is the reason why I love to blog. Readers will always one up me with such cool alternatives. Thank you for sharing this with us.

    @Nimesh: You are welcome 🙂

  6. Shish says:

    is it possible to get the Notes section on the outline page to display the notes added to the month page for a specific date?

    So if you add thing for January 2nd, and then select January 2nd those notes appear on the outline page

  7. Chandoo says:

    @Shish... You can do that using some formula magic. I would not recommend pushing excel to that as outlook / google calendar / icalc etc. do exactly that much more elegantly.

  8. Jörg says:

    Happy christmas to all of you!
    This is really awesome. The nicest calender I've seen for Excel. I also like Miguels version of the sheet.

    Just one "feature" is missing to me. As I live in Germany - where weeks start on Monday - I'd like to change this. Could someone please give me a hint how to do this?

    Thanks in advance

    Jörg

  9. Pedro says:

    Hi Chandoo, I’ve added some new features on your spreadsheet with your permission.

    Check it here:
    http://cid-6b219f16da7128e3.skydrive.live.com/self.aspx/.Public/Calendar%5E_Pedro.xlsm

    Miguel, this calendar is translated to Spanish language.

    Jörg, this new approach allows us to start weeks on Monday.

    Also it's possible to start weeks on Sunday if you enable Excel macros and push the arrows.
    Best Regards,
    Pedro.

  10. Chandoo says:

    @Pedro.. superb stuff.. thanks for sharing the file with all of us.

  11. Pedro says:

    Hi Chandoo, for dates before March 1, 1900 our calendars are wrong.
    In Microsoft Excel, DATE, EOMONTH, WEEKDAY functions return an incorrect result between Monday, January 1, 1900 and Wednesday, February 28, 1900.
    See this page: http://support.microsoft.com/kb/214326/en-us/
    Microsoft Excel incorrectly assumes that the year 1900 is a leap year in all Excel versions.
    That's the reason why our calendar versions only work from March, 1, 1900 until December, 31, 9999.
    Your comments are welcome.
    Pedro.

  12. Chandoo says:

    @Pedro.. Thanks for pointing that out. wow... This reminds me of the Joel Spolsky's first BillG review - http://www.joelonsoftware.com/items/2006/06/16.html (read it, I am sure you would love it.) when Bill out of blue asks about date time implementations for VBA (which Joel is the program manager for...)

    Thanks for sharing the URL too... Here is a specially made, chocolate sprinkled, extra fluffy donut for you 🙂

  13. Pedro says:

    Hi Chandoo, thanks a lot for the donut but I prefer it without chocolate!

    Always it's good to know a little history of Excel.
    The Joel Spolsky’s last BillG Excel review was about the "Hall of Tortured Souls"
    (See this Excel 95 Easter Egg here: http://www.eeggs.com/items/719.html)

    Do not miss the humor!

  14. Pedro says:

    @Chandoo.. I just return with a new calendar version.
    http://cid-6b219f16da7128e3.skydrive.live.com/self.aspx/.Public/calendar-pedrowave.xltx

    It helped me to practice conditional formatting, formulas to show check boxes, data validation drop down list, find out Thanksgiving Day's date for any year, how to find dates of public holidays using Excel, all reading your wonderful posts!

  15. Pedro says:

    Perpetual Calendar Spanish version starting weeks on Monday:
    http://cid-6b219f16da7128e3.skydrive.live.com/self.aspx/.Public/calendario-pedrowave.xltx
    Main characteristics:
    - Not macros.
    - Select a year from 1900 to 9999 with a dropdown listbox.
    - All date fields with the real date format.
    - Easy language change of day of the week and month names because are also dates.
    - Hide Saturdays and/or Sundays.
    - Week starting on Sunday or Monday.
    - Week and month numbers.
    - Hyperlink between sheets.
    - Consistent colors to Holidays, Diary and Events dates.
    - Easy change of Holidays by country.
    - Include 80 World Days and you can add more.
    - A diary with my birthday and 50 more programable appointments.
    - Check box to hide individual dates or all.
    - Holidays, diary and events text are showed on each month's sheet.
    - Ranges defined with Name Manager variables.
    I'll appreciate if you make me some suggestions to improve this calendar.
    Pedro.

  16. Joco1114 says:

    Please, I need help!
    I like all calendar from Pedro, thank you for them. Let me show my problem:

    I have 2 excel cells (for example AE12 and AE13) which mean the starting and the ending date of my duty. I need a macro to insert sheets with label YEAR. MONTH (for example 2010. August or similar) with the proper datas between the two dates. Is it possible?

    Thank you for reading me and sorry about my terribel english! 🙂

  17. Peter says:

    Hello Pedro,

    Thanks so much for the modified calendar template. I love the extra functionality you added. Is there any way you could upload an unlocked version? I wanted to change some of the comments and data validation so I could use it for one of my applications.

    As for feedback on potential improvements, with all the additions you made the file runs pretty slow. I'm sure this has to do with all the interconnectivity between the various tabs, but if there is a way to use less memory via more efficient formulas or something else I think this would make it easier to use. I have a brand new computer and with it running alone the response was pretty slow. One of the changes I'm making is changing the order of the months to match my company's fiscal year, so maybe something to automate a change like that could be useful.

    Cheers,

    Peter

  18. Pedro Wave says:

    Peter, my calendars are unlocked but you need Excel 2007 and 2010 versions to open them.

    Now I return with a new Programmable Task Calendar:
    http://cid-6b219f16da7128e3.office.live.com/view.aspx/.Public/Calendario%20de%20Tareas.xlsx

    Wath an introductory video here:
    http://pedrowave.blogspot.com/2010/10/programmable-task-calendar.html

    This new calendar allows to select the start month to match the school and fiscal year.

  19. ASA says:

    This is great stuff Chandoo and company

    Wanted to know if someone had built something similar

    I need to store one Excel Sheet on this calendar that has all the holidays

    US Holidays appear in RED
    UK Holidays appear in Blue
    Meetings appear in Green
    Submissions appear in Orange

    Is there a way I can store the list in a separate worksheet and all the calendars get updated with this?

    Thanks

  20. divya says:

    please tell me "how to convert Rs.10000/- in to words through excel formula

  21. [...] is all! http://chandoo.org/wp/2009/12/11/2010-calendar-excel-template-downloads/ See more Templates at http://www.vertex42.com/ Share this:Like this:LikeBe the first to like this [...]

  22. Kerisa says:

    Greetings,

    Thanks for this wonderful excel vacation tracker. I notice that the tracker only has three months November, December and January 2015, however, I would like to add the other ten months for 2014. Can you please instruct me on how I can add the other months?
    Thanking you in advance.

  23. kanu bhatia says:

    Hi Chandoo,
    Calendar: can this be printed as single sheet 8.5x11 inch per month
    kanu

  24. Rahul says:

    WOW! I just searching some of like this, that help me.
    Thank you for sharing.

Leave a Reply