Building a simple timer using Excel VBA to track my Rubik’s cube solving speed [case study]

Share

Facebook
Twitter
LinkedIn

Today, lets learn how to make a simple timer app using Excel. First some background…,

Rubik's CubeRecently, I learned how to solve Rubik’s cube from my nephew. As a budding cuber, I wanted to track my progress. Initially I used the stopwatch in my iPhone. But it wont let me track previous times. So I thought, “Well, I can use Excel for this”.

So I made a small timer app using Excel. Its quite minimalistic. It has a single button. I press it and it tracks the start time (date & time stamp). If I press the button again, it records the duration.

This way, I can see my progress over next few weeks and may be plot the trend.

Demo of the Excel VBA timer

Here is a short demo. This is what we will be building.

Building a simple timer using Excel VBA to track time - demo

Tutorial to make a timer in Excel

To make a timer app in Excel, first we need to understand the logic for this. If VBA apps can be defined on a scale of 1 to 10 (1 being easiest to develop and 10 being most complex), our timer app can be classified as 1.5. It is really simple. But nevertheless, it is a good idea to list down various ingredients and basic logic to follow.

So we need,

  • A table to store the time stamps & durations
  • A button (simple text box will do) to start & stop the timer

Set up the timer worksheet

In a blank worksheet, make space for a 2 column table. Type Time stamp & Duration as column headings and make a table from these (CTRL+T to insert the table)

Note: For the macro to work, you do not need a table. Any 2 column range will do. A table makes our timer app look sexy.

Also, insert a rounded rectangle and format it to look like a button (from Format Ribbon > Shape Styles, select something slick and pretty)

In a blank cell, type the word “Start”. Name this cell as timer.button.label

Now, click on the rounded rectangle button, go to formula bar and type =timer.button.label

💡 Tip: Yes, you can assign names or cell references to shapes. This way, whatever text is in the cell will be shown inside the shape.

Other names to make:

Although we can write VBA code without creating these names, our code will be readable with these names. So here we go:

  • Select the header “Timestamp” of the table and name it as time.stamp.start
  • Name the table as Durations from Table Design ribbon
  • In a blank cell, write the formula =COUNTA(Durations[Timestamp])
  • This counts how many timestamps are already inserted.
  • Now name this cell as count.of.timestamps

We are done. Lets roll in to VBA.

Writing the VBA code for timer

Open VBE (Visual Basic Editor) and insert a new module in your timer workbook. There write this code.


Sub startStopTimer()
    If Range("timer.button.label") = "Start" Then
        Range("time.stamp.start").Offset(Range("count.of.timestamps") + 1).Value = Now
        Range("timer.button.label") = "Stop"
    Else
        Range("time.stamp.start").Offset(Range("count.of.timestamps"), 1).Value = Now - Range("time.stamp.start").Offset(Range("count.of.timestamps"))
        Range("timer.button.label") = "Start"
    End If
End Sub

Assign this macro to the timer button

Right click on timer button and choose “Assign macro”. Select the startStopTimer sub from the list and click ok.

Now go ahead and test it. Assuming you have used same names as per this post, your timer should work.

How this macro works?

When you click on the timer button, you want one of the 2 things to happen.

  1. You want to start the timer
  2. You want to stop the timer

What you want to do can be checked with this logical check.

Range("timer.button.label") = "Start"

If this is true, then you want to start the timer.
Else, you want to stop the timer.

If you want to start the timer

Then, we need to go to the last row of the table + 1 and insert current time (now) in that cell.

This is done by,

Range("time.stamp.start").Offset(Range("count.of.timestamps") + 1).Value = Now

Once we do that, we need to change timer button’s text to “Stop”.

This is done by,

Range("timer.button.label") = "Stop"

If you want to stop the timer

Then, we need to go to the last row’s 2nd column of the table and print the difference between latest time (now) and starting time (last row, first column value)

This is done by,

Range("time.stamp.start").Offset(Range("count.of.timestamps"), 1).Value = Now - Range("time.stamp.start").Offset(Range("count.of.timestamps"))

Once we do that, we need to change the button text to “Start” by using this code:

Range("timer.button.label") = "Start"

That’s all. Our VBA code is rather simple.

One last step, formatting the duration

If you look at the duration, it could read something like 0.0042354. This is because duration is displayed as a fraction of day. So 0.0042354 means the duration is 0.42% of a day.

Now, wouldn’t it be better if we can show this in minutes and seconds?

To do that, select the entire table column of durations, press CTRL+1

Then, set formatting as custom and type code as [mm]:ss

And you are done!

Download Simple Timer Excel VBA workbook

Click here to download Simple Timer Excel VBA workbook. Play with it. Use it to track your Sudoku, crossword or knitting times. Or even Rubik’s cube times. See what trends and patterns you can uncover.

Do you use Excel for tracking time?

I know many companies use Excel based trackers to keep track of employee time. I personally use time tracking features of Excel for needs like this all the time.

What about you? Do you use Excel time functions like NOW, TODAY and VBA to track progress? What techniques you apply? Please share using comments.

Like tracking? You will love these

If you track things with Excel, you are going to find below tutorials very useful.

Note: Rubik’s cube image by Booyabazooka thru Wikimedia

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.

31 Responses to “Beautiful Budget vs. Actual chart to make your boss love you”

  1. Harry says:

    Would be considerably easier just to have a table with the variance shown.

  2. Jomili says:

    On Step 3, how do you "Add budget and actual values to the chart again"?

    • Chandoo says:

      There are a few ways to do it.

      Easy:
      1) Copy just the numbers from both columns (Select, CTRL+C)
      2) Select the chart and hit CTRL+V to paste. This adds them to chart.

      Traditional:
      1) Right click on chart and go to "select data..."
      2) From the dialog, click on "Add" button and add one series at a time.

      • Neeraj Agarwal says:

        One more way to accomplish it is just select the columns into chart. Press Ctrl+C and then press Ctrl+V

        Regards
        Neeraj Kumar Agarwal

  3. TheQ47 says:

    Unfortunately, this doesn't seem to work for me in Excel 2010. The "Var 1" and "Var 2" columns cannot combine two fonts to display the symbol and the figure side-by-side.
    Secondly, there is no option to Click on “Value from cells” option when formatting the label options. The only options provided are Series Name, Category Name or Value.

    • Chandoo says:

      @TheQ47... the emoji font also has normal English letters, so if you use that font, then you should be ok. I am assuming your computer doesn't have that font or hasn't been upgraded for emoji support.
      Reg. Excel 2010, you can manually link each label to a cell value. Just select one label at a time (click on labels, wait a second, click on an individual label) and press = and link it to the label var 1 or var 2.

  4. Neeraj Agarwal says:

    I am using excel 2010, please explain how to apply Step 12

    Regards
    Neeraj Kumar Agarwal

  5. mariann says:

    Hi Chandoo,

    I just found your website, and really love it. It helps me a lot to be an Excel expert 😉

    Currently I am facing with a problem at step 11:
    Var1 Var2
    D30%
    A5%
    B0%
    B4%
    B7%
    C10%
    C13%
    D27%
    I42%

    Though at mapping table, I used windings, here formula uses calibra. How I can change it? I am able to change only the whole cell. In this case numbers will be Windings too.

    Thanks for your help!

    • Chandoo says:

      Hi Mariann... Welcome to Chandoo.org and thanks for your comment.

      If you wanted to use symbols from wingdings and combine them with % numbers, then you need to setup two labels. One with symbol, in wingdings font and another with value in normal font. Just add the same series again to the chart, make it invisible, add labels. You may need to adjust the alignment / position of label so everything is visible.

  6. […] firs article explains how you can enhance your charts with symbols. You can simply insert any supported symbol into your data and charts. To some extend you can […]

  7. Franciele says:

    You're a good person, thank you to share your knowledge with us, I will try to do in my work

  8. Ali says:

    Great visualization of variance. My question is that is this possible in powerbi?

    How would you go about it?

  9. NARUTO says:

    HELLO, WHY CANT I FIND VALUES FOR LABELS IN EXCEL 2013

  10. Amol says:

    Dear chanddo sir,

    What to do if we have dynamic range for Chart. How this will work. can you able to make the same thing works on dynamic range.

  11. Ricardo says:

    Sir Chandoo,

    Good Day!
    First, I'd like to say that I am very grateful for your work and for sharing all these things with us.

    I tried to do this chart but it seems that the symbols don't work with text (abs(var%),"0%") unless we keep the Windings font style.
    The problem is, it converts the text into symbol as well and you wont see the 0% anymore. I'm using Windows 7.

  12. MF says:

    WOW - Segoe UI Emoji
    This is the greatest discovery for me this month 🙂 Thanks for sharing.

    Here's my two-cents:
    https://wmfexcel.com/2019/02/17/a-compelling-chart-in-three-minutes/

  13. Renuka says:

    Sir This is awesome chart, and very easy to made because of your way to explain is very simple , everyone can do. Thank you

    one problem i am facing, I hv made this chart , but when i am inserting data table to chart it is showing two times , how can i resolve this

  14. renuka says:

    in this chart when i am adding new month data for example first i made this chart jan to mar but when i add data for the apr month graphs updated automatically but labels are missing for that new month

    • Chandoo says:

      Hi Renuka,

      Please make sure the formulas for labels are also calculated for extra months. Just drag down the series and set label range to appropriate address.

  15. Justine says:

    So I am playing with the Actual chart here - but amounts are bigger than your - you have 600 as Budget - my budget is 104,000 - is there a way to shorten that I am unaware of

    thank you - I LOVE YOUR SITE

  16. Arvind says:

    Thanks for the tips and tricks on Excel. In the Planned versus Actual chart examples, you use multiple values (ex. multiple Categories in above). How can this be done when we have only 1 set of values? For example if I have only this:
    Planned Actual
    SOW Budget 417480 367551

    How can I create a single bar chart like the one above?

  17. JEREMIAH KOOL says:

    Thank you Chandoo.
    This one is just perfect for my Quarterly Review presentation on Operational Budget against Actual Performance for the Hospital I'm currently working with.

    Just Subscribed today (10 minutes ago)

  18. Shawn says:

    Is there a way to make the table of data into a pivot table to be able to add a slicer for the graph due to many different categories and months?

  19. Mihail says:

    Hi, I tried to modify you template with something appropriate for me, and I found a problem. this template was modified by me started with excel 2010, then 2016 and finally 2019. Same thing - somehow appear an error - or didn't show the emoticons for positive percentage or doubled the emoticons for some rows. I suspect to be from excel. if is need it I can sand you my xlsx for study. Please help if you can.

  20. Saidatta Pati says:

    Hi Chandoo,
    Could you please check the Var Formula in Step1. You have mentioned budget-actual and when i did this i got different values but when reversed like actual-budget i got the actual value what you have demonstrated in step1.
    Please share your view.

  21. Dan says:

    This is a great chart (budget vs. actual). However, in trying recreate it, I cannot color in the UP Down bars individually, and they all become formatted with the same color. I'm using Office 365. Look forward to the feedback.

    Thanks.
    Dan

  22. sathik says:

    pls explain in detail step 7

  23. Arun says:

    While in the Excel sheet you have used following formula for Var
    Var = Actual - Budget
    But
    in the note, you have written
    Var = Budget - Actual

  24. aye myat maw says:

    Good Presentation and Data information.thank you so much chandoo.

Leave a Reply