Geek Documentation Logo


Version 1.1


If you have already purchased this Software, let me take a moment to thank you for being a loyal customer
You are entitled to free lifetime updates for ALL future builds

This documentation is to help you understand the Software and to give you a more meaningful insight into what it can do. Please go through the documentation and read it carefully · Basic to moderate VBA skills will be required


You will need the following Excel Version & Prerequisite to use this Software

  1. Excel 2010 onwards (32bit or 64bit)
  2. Basic to moderate VBA skills
  3. Access to the VBOM (a setting in Excel) & Macro's must be enabled
  4. Windows PC · NOT a Mac!

No support is provided for customization or development of this Software

About Progress #back to top

I haven't written a Progressbar for ages but after stumbling across a HTML5 CodePen by Stas Melnikov I simply had to write one for Excel in a similar style. Of course it would not as good as the HTML5 one as I am bound by the IE7 WebBrowser Control (lacking many Javascript & CSS commands) and I do not want to configure registry settings or use an IE Object. Anyhow, I think with the limitations I have, I have sort of done it justice

I have tried to emulate a kind of skipping technique, whereby for small periods of time the Bar appears to be stationary and then jumps up in small Percentages - this looks similar to the technique Stas employs for his demo

This Progressbar can be used with DoEvents or an alternative MyDoEvents to display the Percentage and Message of a Task until it is complete, after which it can Fade away or display a Complete Page with Message. I have added the Easing function to slow the rate of the Bar down as it reaches conclusion and the Workbook comes with many examples so you can get a feel as to what can be done including some 'real world' examples

Yellow Progress Image

Features include:

  • * FadeIn/FadeOut on the Calendar Dialog
  • * Browse previous and next Calendar Months using tiny arrows
  • * Modal or Modeless Calendar Dialog
  • * Hover or Rollover effect on the Dates
  • * Use {ESC} or Mouse Click on the Calendar to dismiss the Dialog
  • * Map {ESC} to allow you to use a Mouse Clikc anywhere on the Worksheet to dismiss the Calendar Dialog
  • * Cell horizontal and vertical adjustment for the Calendar Dialog positioning
  • * Apply a specific Month Format to the Calendar when it is displayed
  • * Apply a specific Cell Date Format whenever a Calendar Date is picked
  • * The Download includes 5 Worksheet demostrations of using the PopUp Calendar

Getting Started #back to top

The Zip download File

Unzip the File and open Popup-Calendar.xlsm. Test the examples to see what PopUp Calendar can do. If you want, you can now start your own Project using the File or you can start from scratch by importing the Code Modules


Quick Steps

To start from scratch, open a new Excel Workbook. Import the 3 Code Modules in the Zip File, 'frmCalendar.frm', 'Calendar.bas' and 'clCalendar.cls'. Add the Code below to a standard Code Module or the ThisWorkbook Code Module and run the Subroutine to display the PopUp Calendar:

Sub PopUpCalendar_Example()
    Call Calendar.Init
    Call Calendar.Popup
End Sub

Of course, more than likely, you will need to trigger the Calendar when a user uses a Mouse Click in a Cell. To do this, use one of the Examples included with the Zip File. Here is a Modal PopUp Calendar triggered when a user selects Cell "C10" in a Worksheet (the Code should be added to a Worksheet Code Module):

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Application.Intersect(Range("C10"), Range(Target.Address)) Is Nothing Then
        Call Calendar.Init(FadeIn:=True, FadeOut:=True, FadeSpeed:=6)
        Call Calendar.Popup(LeftAdjustment:=-60, TopAdjustment:=10, DismissByEscape:=True)
    End If
End Sub

Adjusting the PopUp Dialog Positioning #back to top

You can make the Calendar 'popup' where you want it to, by adjusting the 'Left' and 'Top' adjustments in the Code. For example, to make the Calendar display closer to the bottom of the Cell vertically, you can adjust the 'TopAdjustment', setting it to 0. You can use the following Code when you call the Calendar.Popup() Subroutine like this:

Sub PopUpCalendar_Positioning_Example()

    Call Calendar.Init(FadeIn:=True, _
                       FadeOut:=True, _
                       FadeSpeed:=6, _

    Call Calendar.Popup(LeftAdjustment:=-60, _
                        TopAdjustment:=0, _

End Sub

The Calendar positioning will stick if the Window of Excel is adjusted, Freeze Panes are used or if the Worksheet is Zoomed (depending on how you set the 'Left' and 'Top' Parameters, there may be slight difference when Zoomed, but I thik this is acceptable)

Fading the Calendar #back to top

By default, the Calendar is NOT set to Fade in or out. You can tell it how you want it to display for any 4 combinations of Fading in or out. For example to Fade the Calendar in, but NOT fade it out you would use the following Code:

Sub PopUpCalendar_Fade_Example()
    Call Calendar.Init(FadeIn:=True, FadeOut:=False)
    Call Calendar.Popup
End Sub

You can adjust the Fade speed (whole integer, default = 6) either faster or slower by setting the 'FadeSpeed' Parameter in the Code. I have made the Calendar fade in much slower by reducing the Parameter to '3' like this:

Sub PopUpCalendar_FadeSpeed_Example()
    Call Calendar.Init(FadeIn:=True, FadeOut:=False, FadeSpeed:=3)
    Call Calendar.Popup
End Sub

Modal Calendar #back to top

The Calendar can be used as Modal (default = True), meaning that it can only be dismissed by the {ESC} Key if required or a Mouse Click on the Dialog or by selecting a Date or any of these combinations - a Mouse Click anywhere on a Cell in a Worksheet will NOT dismiss the Calendar

To force the user to only select a Date (allow different Calendar Months to be chosen), prevent any Dialog or Worksheet Cell Mouse Clicks, but still allow the {ESC} Key to dismiss the Dialog, you can use the followiing Code:

Sub PopUpCalendar_Modal_Example()

    Call Calendar.Init(FadeIn:=True, _
                       FadeOut:=True, _

    Call Calendar.Popup(LeftAdjustment:=-60, _
                        TopAdjustment:=10, _
                        DismissByEscape:=True, _

End Sub

Please Note: using CTRL+Break will pause or cause the Code to Break when using a Modal Dialog. I may prevent this in future builds but right now it does not affect the operation of the Calendar which continues just fine after pressing 'F5' or continue in the VBA Editor

Modeless Calendar #back to top

The Calendar can also be used as Modeless, meaning that a user may select other Worksheet Cells to pick a Date from the Dialog or to allow the user to dismiss the Calendar if any Worksheet Cell is selected. This is a neat option as you can prevent all Mouse Clicks other than the very first Cell selection to trigger the Calendar. The user cannot dismiss the Calendar by a Mouse Click on the Dialog itself, but can select a Date. If they don't want to do the Date selection now, they simply make a Mouse Click anywhere in the Worksheet and the Calendar will be dismissed. You can of course combine this with allowing or NOT allowing the {ESC} Key to dismiss the Calendar for a very professional 'pop up' Calendar

Here is the Code for a Modeless Calendar ensuring NOTHING can dismiss the Dialog only a Mouse Click on the Worksheet or a valid Date selection (this must be added into a Worksheet Code Module):

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Application.Intersect(Range("C10"), Range(Target.Address)) Is Nothing Then
        If Not Calendar.Running Then
            Call Calendar.Init(FadeIn:=True, FadeOut:=True, FadeSpeed:=6)
            Call Calendar.Popup(LeftAdjustment:=-60, TopAdjustment:=10, DismissByEscape:=False, UserFormDismissByClick:=False, ModalDialog:=False)
        End If
        ' force an explicit exit
        Calendar.Running = False
        Unload frmCalendar
    End If
End Sub 

Please Note: using CTRL+Break will NOT pause or cause the Code to Break when using a Modeless Dialog

Cell Formatting #back to top

By default the Date is output as a Date Serial number ie. 43355, meaning 12 September, 2018. You can apply Cell Formatting in Excel, before you pick a Date from the Calendar or you can explicitly tell the Calendar what Format to use when outputting a Date. For example to use the Short Date Format "12/09/2018" you would use Code like this:

Sub PopUpCalendar_CellFormat_Example()
    Call Calendar.Init(FormatActiveCell:="dd/mm/yyyy")
    Call Calendar.Popup
End Sub

Using the {ESC} Key #back to top

You can use the {ESC} Key to dismiss the Calendar (default = True). To prevent the user using the {ESC} Key, set the 'DismissByEscape' Parameter in the Calendar.Popup() Subroutine to False like this:

Sub PopUpCalendar_EscapeKey_Example()
    Call Calendar.Init
    Call Calendar.Popup(DismissByEscape:=False)
End Sub

When using a Modeless Calendar, the {ESC} Key will still close the Dialog by default when a user selects a different Cell than the trigger Cell. By explicitly setting the 'ModalDialog' Parameter in the Calendar.Popup() Subroutine to False will force the Code to 'Map' the {ESC} Key to a Function that will allow you to still capture {ESC} (if you want to when a user selects a different Cell - you don't have to), but will also allow you to instead, let the user dismiss the Dialog by selecting a different Cell. The best way to see this is to look at all of the Examples to help you understand what I mean and how different you can make the PopUp Calendar {ESC} Key behaviour

Preventing Dismiss by Mouse Click on the Calendar #back to top

You can prevent a user from dismissing the Calendar by a Mouse Click (default = True) by setting the 'UserFormDismissByClick' Parameter in the Calendar.Popup() Subroutine to False like this:

Sub PopUpCalendar_PreventUserFormDismiss_Example()
    Call Calendar.Init
    Call Calendar.Popup(UserFormDismissByClick:=False)
End Sub

Changing the Month (and Format) on the Calendar #back to top

You can change the Calendar Month using the tiny arrows on the Calendar. The left arrow will give display the previous Month and the right arrow will display the next Month

By default the Month Format on the Calendar means that the Month and Year are displayed like this 'September 2018'. To change this to a shorter Month and Year ie. 'Sep 19', you can use the following Code:

Sub PopUpCalendar_MonthFormat_Example()
    Call Calendar.Init(MonthFormat:="mmm yy")
    Call Calendar.Popup
End Sub

Limitations #back to top

The Calendar limitations are that it cannot be scaled, the Calendar Months cannot be changed into a different language and the Weekends are set to Saturday/Sunday. The Calendar uses an Image pre-loaded into the UserForm. Some parts of the Image are used as the Text for the Calendar Months and the Weekends are also pre-set. The current Calendar image and all of the UserForm Controls are at 67%. I do have a working UserForm scaled to 75% available on request if you need a slightly larger Calendar. If you have purchased the PopUp Calendar Software, you can request this from via my Facebook Page

I may address some of these points in future builds, but it is not for discussion here or via Support

Screen Shots #back to top

This is a Screen Shot of the Popup Calendar being used to select a Date on a Worksheet

You can specifiy the Cell for the Calendar to 'popup'. Here I created a simple demo whereby the user can select a Date if they click on Cell "D5"

Popup Calendar Image 1000px x 654px

This is a Screen Shot of the Download File

The File includes a licensing Worksheet, showing the latest Version number and the 5 example Worksheets that contain Code for each of the Popup Calendar demos

Popup Calendar Download File Image 1000px x 654px

This is a Screen Shot of the Code Modules and the main Popup Calendar UserForm UI

The UserForm has a single Image loaded as a Picture. Part of the Image is set to a distinct Colour (an off-black) which is then made invisible by the Code to get the nice 'popup' look. The UserForm contains 37 Label Controls for the Calendar Days, 2 more Label Controls for the Calendar Arrows and 1 more Lable Control for the Calendar Month

Popup Calendar UserForm Code Module 1000px x 654px

Videos #back to top

Video of the PopUp Calendar in action

Here, I run through the 5 example Worksheets to demonstrate the Popup Calendar. Remember you can use the Calendar as a Modal Dialog or a Modeless Dialog. I prefer the Modeless Dialog, where the user can click any Cell to dismiss the Calendar. I also turn off the ability to dismiss the Calendar by a Mouse Click anywhere on the UserForm, forcing the user to either select a Date, press the {ESC} Key or use a Mouse Click anywhere on the Worksheet to finish picking a Date

What is the Size in Memory when all of the Code Modules have been imported into Excel?

The File Size will be approx. 70KB - this is due to the BMP image which is required for UserForm Transparency

Support #back to top

Please remember you have purchased very affordable Software and you have not paid for a full-time Software design agency - I am but one man. Occasionally I may help with small tweaks, but these requests will be put on a much lower priority due to their nature. You have not PAID for Support, Support is 100% optional and I provide it for your convenience, so please be patient, polite and respectful

Support (limited) for my Software includes:

* Responding to questions or problems regarding the Software and its features
* Fixing valid (replicated) bugs and reported issues for the VERSION I HAVE WRITTEN

Software support does not include:

* Customization and installation services
* Support for third party software or ANY kind of development whatsoever

Before seeking support, please...

* Make sure your question is a valid Software Issue and not a customization request
* Make sure you have read through the documentation and any related video guides before asking support on how to accomplish a task
* Make sure to double check the Software FAQs or online documentation
* Ensure that you access to the VBOM is allowed and that Macros can run in Excel
* Make sure to provide 'proof of purchase' and state the name / version of the Software that you are having issues with when requesting support by Email or via Facebook

How to get Support

Contact Mark Kubiszyn on the Email address provided when you purchased the Software, including the Order Number
Contact via our Facebook Page - remember to be patient, if there has been an issue with your download, I will always respond within 48 hours and will Email you the File directly if neccessary or via Messanger. For other issues the response time may be considerably longer and I may choose to respond to specific questions only (as is my right), depending on what has been asked

Version History (Changelog) #back to top

You can find the version history in the Code Module for any Macro-enabled Software or read more information below. The latest Version is always shown first


01.09.2018 (Version 1) released