Geek Documentation Logo

Popup Calendar

Version 1.1


Introduction


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

Requirements

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

  1. Excel 2010, 2013 & 2016 (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 PopUp Calendar #back to top

PopUp Calendar is a single Date picker Calendar UI for Excel that will 'popup' next to the Cell to enable a user to select a Date. It is based upon an Image I saw on Dribble of a Shipping Date Picker by Alex Saretzky - I loved the UI design, so I built myself one just like it for Excel

From version 1.1 anyone purchasing this Software will also receive my DatePicker Software and visa versa, anyone purchasing my DatePicker Software will receive this Software as well

If you purchase this Project, I will include the following Excel Software in the download for FREE!


DatePicker

Popup Calendar 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 Click 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 demnostrations of using the PopUp Calendar
  • * FREE DatePicker Software is now included in the zip Archive





Getting Started #back to top

The Zip download File

Unzip the PopUp-Calendar.zip 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

Popup-Calendar-Files

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, _
                       FormatActiveCell:="dd/mm/yyyy")

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

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, _
                       FadeSpeed:=6)

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

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
    Else
        ' 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
                            

Changing the Default Date #back to top

You can change the default Date that is displayed when the Calendar Pops up by specifying the 'StartDate' Property before a call to Calendar.Init() using the DateSerial function. In the Code shown below for the example Worksheet Code Module Code, if a user clicks anywhere below Row 7 on a Sheet the Calendar will be set to the current Month + 1 ie. next Month. You can also set it directly ie. DateSerial(2021, 11, 1)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row > 7 Then
        Calendar.StartDate = DateSerial(Year(Date), Month(Date) + 1, 1)
        Call Calendar.Init(FadeIn:=True, FadeOut:=True, FadeSpeed:=12, FormatActiveCell:="dd/mm/yyyy")
        Call Calendar.Popup(LeftAdjustment:=-60, TopAdjustment:=10, DismissByEscape:=True)
    End If
End Sub

' specify the exact Date like this meaning November 2021 - always set the Day to 1, the first Day of the Month
Calendar.StartDate = DateSerial(2021, 11, 1)

                            

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 Kubiszyn.co.uk 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

Bug Fixes #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

Bug Fixes:

* The Start Date for the Calendar Property cannot be set - Investigating 30.09.2021 Fixed 1.10.2021
* It appears there may be a memory leak as the Class Initialise is repeatedly called - I will investigate! 30.09.2021 Fixed 4.10.2021

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


Changelog

04.10.2021 (Version 1.1) released.  From version 1.1 anyone purchasing this Software will also receive my DatePicker Software and visa versa, anyone purchasing my DatePicker Software will receive this Software as well                               
                                
01.09.2018 (Version 1) released