Public absDate As Date
Sub setGUIDReferences()
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid "{0D452EE1-E08F-101A-852E-02608C4D0BB4}", 0, 0
On Error GoTo 0
End Sub
Sub dateGetter()
Dim myForm As Object, calendarForm As Object, newLabel As MSForms.Label, newSpinner As MSForms.SpinButton
Dim NewFrame As MSForms.Frame
Dim NewButton As MSForms.CommandButton, newButton2 As MSForms.CommandButton
Dim NewListBox As MSForms.ListBox
Dim smallDayArray
Dim xDiff As Long
Dim smallTextArray
Dim startDate As Date
Dim endDate As Date
Set myForm = ThisWorkbook.VBProject.VBComponents.Add(3)
With myForm
.Properties("Caption") = "Select Date Range"
.Properties("Width") = 247.5
.Properties("Height") = 350
End With
Set NewButton = myForm.Designer.Controls.Add("Forms.commandbutton.1")
With NewButton
.Name = "CommandButton1"
.Top = 288
.Left = 138
.Width = 42
.Height = 24
.Font.Size = 10
.Font.Name = "Tahoma"
.Caption = "Cancel"
End With
Set NewButton = myForm.Designer.Controls.Add("Forms.commandbutton.1")
With NewButton
.Name = "CommandButton2"
.Top = 288
.Left = 186
.Width = 42
.Height = 24
.Font.Size = 10
.Font.Name = "Tahoma"
.Caption = "Select"
End With
Set NewFrame = myForm.Designer.Controls.Add("Forms.frame.1")
With NewFrame
.Name = "Frame1"
.Top = 54
.Left = 24
.Width = 192
.Height = 180
.Font.Size = 9
.Font.Name = "Tahoma"
End With
Set newLabel = myForm.Designer.Controls.Add("Forms.Label.1")
With newLabel
.Name = "Label1"
.Top = 30
.Left = 30
.Width = 102
.Height = 18
.Font.Size = 12
.Font.Name = "Tahoma"
.ForeColor = RGB(128, 0, 0)
.BackColor = RGB(256, 256, 256)
.Caption = "November 2017"
End With
Set newLabel = myForm.Designer.Controls.Add("Forms.Label.1")
With newLabel
.Name = "Label2"
.Top = 258
.Left = 36
.Width = 174
.Height = 18
.Font.Size = 12
.Font.Name = "Tahoma"
.ForeColor = RGB(0, 0, 0)
.Caption = "01/01/2017"
End With
Set newSpinner = myForm.Designer.Controls.Add("Forms.spinbutton.1")
With newSpinner
.Name = "SpinButton1"
.Top = 24
.Left = 144
.Width = 12.75
.Height = 25
End With
smallDayArray = Array("S", "M", "T", "W", "T", "F", "S")
smallTextArray = Array("day1", "day2", "day3", "day4", "day5", "day6", "day7")
xDiff = 18
For i = LBound(smallDayArray) To UBound(smallDayArray)
Set lbl = NewFrame.Controls.Add("Forms.Label.1")
With lbl
.Name = smallTextArray(i)
.Top = 6
.Left = xDiff
.Width = 12
.Height = 18
.Font.Size = 11
.Font.Name = "Tahoma"
.Caption = smallDayArray(i)
End With
xDiff = xDiff + 24
Next i
arrCounter = 1
For j = 1 To 6
xDiff = 12
For k = 1 To 7
Set lbl = NewFrame.Controls.Add("Forms.Label.1")
With lbl
.Name = "lb_" & arrCounter
Select Case j
Case 1
.Top = 24
Case 2
.Top = 48
Case 3
.Top = 72
Case 4
.Top = 96
Case 5
.Top = 120
Case 6
.Top = 144
End Select
.Left = xDiff
.Width = 18
.Height = 18
.Font.Size = 11
.Font.Name = "Tahoma"
.Caption = " " & arrCounter
.ForeColor = RGB(128, 0, 0)
.BackColor = RGB(256, 256, 256)
End With
arrCounter = arrCounter + 1
xDiff = xDiff + 24
Next k
Next j
myForm.CodeModule.InsertLines 1, "Private Sub CommandButton1_Click()"
myForm.CodeModule.InsertLines 2, "absDate = 0"
myForm.CodeModule.InsertLines 3, "Unload Me"
myForm.CodeModule.InsertLines 4, "End Sub"
myForm.CodeModule.InsertLines 5, ""
myForm.CodeModule.InsertLines 6, "Private Sub SpinButton1_SpinDown()"
myForm.CodeModule.InsertLines 7, "Dim newDate1 As Date"
myForm.CodeModule.InsertLines 8, " newDate1 = DateValue(Left(Label1.Caption, Len(Label1.Caption) - 5) & " & Chr(34) & " 1, " & Chr(34) & " & Right(Label1.Caption, 4))"
myForm.CodeModule.InsertLines 9, " newDate1 = DateAdd(" & Chr(34) & "m" & Chr(34) & ", -1, newDate1)"
myForm.CodeModule.InsertLines 10, " Label1.Caption = MonthName(Month(newDate1)) & " & Chr(34) & " " & Chr(34) & " & Year(newDate1)"
myForm.CodeModule.InsertLines 11, " Call clearBoxes"
myForm.CodeModule.InsertLines 12, " Run fillCal(newDate1)"
myForm.CodeModule.InsertLines 13, "End Sub"
myForm.CodeModule.InsertLines 14, "Private Sub SpinButton1_SpinUp()"
myForm.CodeModule.InsertLines 15, "Dim newDate1 As Date"
myForm.CodeModule.InsertLines 16, " newDate1 = DateValue(Left(Label1.Caption, Len(Label1.Caption) - 5) & " & Chr(34) & " 1, " & Chr(34) & " & Right(Label1.Caption, 4))"
myForm.CodeModule.InsertLines 17, " newDate1 = DateAdd(" & Chr(34) & "m" & Chr(34) & ", 1, newDate1)"
myForm.CodeModule.InsertLines 18, " Label1.Caption = MonthName(Month(newDate1)) & " & Chr(34) & " " & Chr(34) & " & Year(newDate1)"
myForm.CodeModule.InsertLines 19, " Call clearBoxes"
myForm.CodeModule.InsertLines 20, " Run fillCal(newDate1)"
myForm.CodeModule.InsertLines 21, "End Sub"
myForm.CodeModule.InsertLines 22, "Function dhDaysInMonth2(Optional dtmDate As Date = 0) As Integer"
myForm.CodeModule.InsertLines 23, " ' Return the number of days in the specified month. Written by Chip Pierson"
myForm.CodeModule.InsertLines 24, " If dtmDate = 0 Then"
myForm.CodeModule.InsertLines 25, " ' Did the caller pass in a date? If not, use"
myForm.CodeModule.InsertLines 26, " ' the current date."
myForm.CodeModule.InsertLines 27, " dtmDate = Date"
myForm.CodeModule.InsertLines 28, " End If"
myForm.CodeModule.InsertLines 29, " dhDaysInMonth2 = DateSerial(Year(dtmDate), _ "
myForm.CodeModule.InsertLines 30, " Month(dtmDate) + 1, 1) - _ "
myForm.CodeModule.InsertLines 31, " DateSerial(Year(dtmDate), Month(dtmDate), 1)"
myForm.CodeModule.InsertLines 32, "End Function"
myForm.CodeModule.InsertLines 33, "Public Sub UserForm_Activate()"
myForm.CodeModule.InsertLines 34, "Dim currentDate As Date"
myForm.CodeModule.InsertLines 35, ""
myForm.CodeModule.InsertLines 36, " For i = 1 To 42" & vbNewLine
myForm.CodeModule.InsertLines 37, " txt = txt & " & Chr(34) & "Private Sub lb_" & Chr(34) & " & i & " & Chr(34) & "_Click()" & Chr(34) & " & vbNewLine" & vbNewLine
myForm.CodeModule.InsertLines 38, " txt = txt & " & Chr(34) & "Dim newDate As Date" & Chr(34) & " & vbNewLine" & vbNewLine
myForm.CodeModule.InsertLines 39, " txt = txt & " & Chr(34) & "newDate = DateValue(Mid(Label1.Caption, 1, Len(Label1.Caption) - 5) &" & Chr(34) & " & Chr(34) & " & Chr(34) & Chr(34) & " & lb_" & " & i & " & Chr(34) & ".Caption & " & Chr(34) & " & Chr(34) & " & Chr(34) & ", " & Chr(34) & " & Chr(34) & " & Chr(34) & " & Right(Label1.Caption, 4))" & Chr(34) & " & vbNewLine" & vbNewLine
myForm.CodeModule.InsertLines 40, " txt = txt & " & Chr(34) & "Label2.Caption = " & Chr(34) & " & Chr(34) & " & Chr(34) & "Date: " & Chr(34) & " & Chr(34) & " & Chr(34) & " & newDate" & Chr(34) & " & vbNewLine" & vbNewLine
myForm.CodeModule.InsertLines 41, "txt = txt & " & Chr(34) & "End Sub" & Chr(34) & " & vbNewLine" & vbNewLine
myForm.CodeModule.InsertLines 42, "Next i" & vbNewLine
myForm.CodeModule.InsertLines 43, ""
myForm.CodeModule.InsertLines 44, "Label2.Caption = Chr(34) & Chr(34) "
myForm.CodeModule.InsertLines 45, "currentDate = DateValue(Month(Date) & " & Chr(34) & " 1" & Chr(34) & " & " & Chr(34) & ", " & Chr(34) & " & Year(Date))"
myForm.CodeModule.InsertLines 46, "Run fillCal(currentDate)"
myForm.CodeModule.InsertLines 47, "End Sub"
myForm.CodeModule.InsertLines 48, "Function fillCal(startDate As Date)"
myForm.CodeModule.InsertLines 49, "Dim currentDayOfMonth As Integer, i As Integer"
myForm.CodeModule.InsertLines 50, "currentDayOfMonth = Day(Date)"
myForm.CodeModule.InsertLines 51, "Dim startCal As Date, currentMonth as Integer"
myForm.CodeModule.InsertLines 52, "Dim labelArray, sumVar3 As Long"
myForm.CodeModule.InsertLines 53, " Label2.Caption = " & Chr(34) & "" & Chr(34)
myForm.CodeModule.InsertLines 54, " labelArray = Array(" & Chr(34) & "lb_1" & Chr(34) & ", " & Chr(34) & "lb_2" & Chr(34) & ", " & Chr(34) & "lb_3" & Chr(34) & ", " & Chr(34) & "lb_4" & Chr(34) & ", " & Chr(34) & "lb_5" _
& Chr(34) & ", " & Chr(34) & "lb_6" & Chr(34) & ", " & Chr(34) & "lb_7" & Chr(34) & ", " & Chr(34) & "lb_8" & Chr(34) & ", " & Chr(34) & "lb_9" & Chr(34) & ", " & Chr(34) _
& "lb_10" & Chr(34) & ", " & Chr(34) & "lb_11" & Chr(34) & ", " & Chr(34) & "lb_12" & Chr(34) & ", " & Chr(34) & "lb_13" & Chr(34) & ", " & Chr(34) & "lb_14" & Chr(34) & ", " & Chr(34) & "lb_15" & Chr(34) & ", _"
myForm.CodeModule.InsertLines 55, " " & Chr(34) & "lb_16" & Chr(34) & ", " & Chr(34) & "lb_17" & Chr(34) & ", " & Chr(34) & "lb_18" & Chr(34) & ", " & Chr(34) & "lb_19" & Chr(34) & ", " & Chr(34) & "lb_20" & Chr(34) & ", " & _
Chr(34) & "lb_21" & Chr(34) & ", " & Chr(34) & "lb_22" & Chr(34) & ", " & Chr(34) & "lb_23" & Chr(34) & ", " & Chr(34) & "lb_24" & Chr(34) & ", " & Chr(34) & "lb_25" & Chr(34) & ", " & _
Chr(34) & "lb_26" & Chr(34) & ", " & Chr(34) & "lb_27" & Chr(34) & ", " & Chr(34) & "lb_28" & Chr(34) & ", " & Chr(34) & "lb_29" & Chr(34) & ", " & Chr(34) & "lb_30" & Chr(34) & ", " & Chr(34) & "lb_31" & Chr(34) & ", _"
myForm.CodeModule.InsertLines 56, " " & Chr(34) & "lb_32" & Chr(34) & ", " & Chr(34) & "lb_33" & Chr(34) & ", " & Chr(34) & "lb_34" & Chr(34) & ", " & Chr(34) & "lb_35" & Chr(34) & ", " & Chr(34) & "lb_36" & Chr(34) & ", " & _
Chr(34) & "lb_37" & Chr(34) & ", " & Chr(34) & "lb_38" & Chr(34) & ", " & Chr(34) & "lb_39" & Chr(34) & ", " & Chr(34) & "lb_40" & Chr(34) & ", " & Chr(34) & "lb_41" & Chr(34) & ", " & Chr(34) & "lb_42" & Chr(34) & ")"
myForm.CodeModule.InsertLines 57, " Label1 = MonthName(Month(startDate)) & " & Chr(34) & " " & Chr(34) & " & Year(startDate)"
myForm.CodeModule.InsertLines 58, " sumVar3 = Weekday(startDate) - 1"
myForm.CodeModule.InsertLines 59, " "
myForm.CodeModule.InsertLines 60, " For i = LBound(labelArray) To UBound(labelArray)"
myForm.CodeModule.InsertLines 61, " Me.Controls(labelArray(i)).Caption = " & Chr(34) & "" & Chr(34) & ""
myForm.CodeModule.InsertLines 62, " Next i"
myForm.CodeModule.InsertLines 63, " "
myForm.CodeModule.InsertLines 64, " For i = 1 To dhDaysInMonth2(startDate)"
myForm.CodeModule.InsertLines 65, " Me.Controls(labelArray(sumVar3)).Caption = i"
myForm.CodeModule.InsertLines 66, " If currentDayOfMonth = i And month(Date) = Month(StartDate) And Year(Date) = Year(StartDate) Then"
myForm.CodeModule.InsertLines 67, " Me.Controls(labelArray(sumVar3)).BackColor = RGB(256, 0, 0)"
myForm.CodeModule.InsertLines 68, " Me.Controls(labelArray(sumVar3)).ForeColor = RGB(256, 256, 256)"
myForm.CodeModule.InsertLines 69, " Label2.Caption = " & Chr(34) & "Date: " & Chr(34) & " & DateValue(Month(startDate) & " & Chr(34) & "/" & Chr(34) & " & i & " & Chr(34) & "/" & Chr(34) & " & Year(startDate))"
myForm.CodeModule.InsertLines 70, " End If"
myForm.CodeModule.InsertLines 71, " sumVar3 = sumVar3 + 1"
myForm.CodeModule.InsertLines 72, " Next i"
myForm.CodeModule.InsertLines 73, " "
myForm.CodeModule.InsertLines 74, "End Function"
myForm.CodeModule.InsertLines 75, "Private Sub CommandButton2_Click()"
myForm.CodeModule.InsertLines 76, " absDate = Replace(Me.Label2.Caption, " & Chr(34) & "Date: " & Chr(34) & ", " & Chr(34) & Chr(34) & "):Unload Me"
myForm.CodeModule.InsertLines 77, "End Sub"
myForm.CodeModule.InsertLines 78, "Private Sub clearBoxes()"
myForm.CodeModule.InsertLines 79, "Dim labelArray"
myForm.CodeModule.InsertLines 80, " Label2.Caption = " & Chr(34) & "" & Chr(34)
myForm.CodeModule.InsertLines 81, " labelArray = Array(" & Chr(34) & "lb_1" & Chr(34) & ", " & Chr(34) & "lb_2" & Chr(34) & ", " & Chr(34) & "lb_3" & Chr(34) & ", " & Chr(34) & "lb_4" & Chr(34) & ", " & Chr(34) & "lb_5" _
& Chr(34) & ", " & Chr(34) & "lb_6" & Chr(34) & ", " & Chr(34) & "lb_7" & Chr(34) & ", " & Chr(34) & "lb_8" & Chr(34) & ", " & Chr(34) & "lb_9" & Chr(34) & ", " & Chr(34) _
& "lb_10" & Chr(34) & ", " & Chr(34) & "lb_11" & Chr(34) & ", " & Chr(34) & "lb_12" & Chr(34) & ", " & Chr(34) & "lb_13" & Chr(34) & ", " & Chr(34) & "lb_14" & Chr(34) & ", " & Chr(34) & "lb_15" & Chr(34) & ", _"
myForm.CodeModule.InsertLines 82, " " & Chr(34) & "lb_16" & Chr(34) & ", " & Chr(34) & "lb_17" & Chr(34) & ", " & Chr(34) & "lb_18" & Chr(34) & ", " & Chr(34) & "lb_19" & Chr(34) & ", " & Chr(34) & "lb_20" & Chr(34) & ", " & _
Chr(34) & "lb_21" & Chr(34) & ", " & Chr(34) & "lb_22" & Chr(34) & ", " & Chr(34) & "lb_23" & Chr(34) & ", " & Chr(34) & "lb_24" & Chr(34) & ", " & Chr(34) & "lb_25" & Chr(34) & ", " & _
Chr(34) & "lb_26" & Chr(34) & ", " & Chr(34) & "lb_27" & Chr(34) & ", " & Chr(34) & "lb_28" & Chr(34) & ", " & Chr(34) & "lb_29" & Chr(34) & ", " & Chr(34) & "lb_30" & Chr(34) & ", " & Chr(34) & "lb_31" & Chr(34) & ", _"
myForm.CodeModule.InsertLines 83, " " & Chr(34) & "lb_32" & Chr(34) & ", " & Chr(34) & "lb_33" & Chr(34) & ", " & Chr(34) & "lb_34" & Chr(34) & ", " & Chr(34) & "lb_35" & Chr(34) & ", " & Chr(34) & "lb_36" & Chr(34) & ", " & _
Chr(34) & "lb_37" & Chr(34) & ", " & Chr(34) & "lb_38" & Chr(34) & ", " & Chr(34) & "lb_39" & Chr(34) & ", " & Chr(34) & "lb_40" & Chr(34) & ", " & Chr(34) & "lb_41" & Chr(34) & ", " & Chr(34) & "lb_42" & Chr(34) & ")"
myForm.CodeModule.InsertLines 84, " For i = lbound(labelArray) to ubound(labelArray)"
myForm.CodeModule.InsertLines 85, " Me.Controls(labelArray(i)).BackColor = RGB(256, 256, 256)"
myForm.CodeModule.InsertLines 86, " Me.Controls(labelArray(i)).ForeColor = RGB(0, 0, 0)"
myForm.CodeModule.InsertLines 87, " next i"
myForm.CodeModule.InsertLines 88, "End Sub"
Dim myCounter As Long
myCounter = 89
For i = 1 To 42
myForm.CodeModule.InsertLines myCounter, "Private Sub lb_" & i & "_Click()"
myCounter = myCounter + 1
myForm.CodeModule.InsertLines myCounter, "Dim newDate As Date"
myCounter = myCounter + 1
myForm.CodeModule.InsertLines myCounter, "Call clearBoxes"
myCounter = myCounter + 1
myForm.CodeModule.InsertLines myCounter, "absDate = DateValue(Left(Label1.Caption, Len(Label1.Caption) - 5) & " & Chr(34) & Chr(32) & Chr(34) & " & lb_" & i & ".Caption & " & Chr(34) & ", " & Chr(34) & Chr(38) & " Right(Label1.Caption, 4))"
myCounter = myCounter + 1
myForm.CodeModule.InsertLines myCounter, "Label2.Caption = " & Chr(34) & "Date: " & Chr(34) & " & absDate" & vbNewLine
myCounter = myCounter + 1
myForm.CodeModule.InsertLines myCounter, "lb_" & i & ".backcolor = rgb(256,0,0)"
myCounter = myCounter + 1
myForm.CodeModule.InsertLines myCounter, "lb_" & i & ".forecolor = rgb(256,256,256)"
myCounter = myCounter + 1
myForm.CodeModule.InsertLines myCounter, "End Sub" & vbNewLine
myCounter = myCounter + 1
Next i
absDate = Format(Date, "mm/dd/yyyy")
Set calendarForm = VBA.UserForms.Add(myForm.Name)
calendarForm.Show
If absDate <> 0 Then
startDate = absDate
Debug.Print "Your First Date is " & startDate
Else
Beep
MsgBox "You did not select a date"
GoTo endItAll
End If
endItAll:
ThisWorkbook.VBProject.VBComponents.Remove myForm
End Sub
Function dhDaysInMonth(Optional dtmDate As Date = 0) As Integer
If dtmDate = 0 Then
dtmDate = Date
End If
dhDaysInMonth2 = DateSerial(Year(dtmDate), _
Month(dtmDate) + 1, 1) - _
DateSerial(Year(dtmDate), Month(dtmDate), 1)
End Function