我發現這個驚人的日期選擇器形成一個可供用戶自定義用於Excel版本的不支持日曆控件的團隊。 我將此添加到我的另一個WB,以便每次用戶單擊需要日期的列時,都會顯示datepicker用戶窗體,然後在單元格中輸入所選日期。自定義日期選擇器彈出窗口excel 2010
現在我正嘗試將這與我創建的用戶窗體一起使用。我添加了一個文本框,當用戶窗體打開時自動填充今天的日期,但我想以某種方式獲取datepickerform在點擊日期文本框時彈出。我添加了private sub textbox_change() datepickerform.show
,但我正在收到一個運行時錯誤91「對象變量或塊變量未設置」。
調試器將我帶到DatePickerForm代碼的這一部分,並突出顯示第一行。
Private Sub UserForm_Activate()
If IsDate(Target.Value) Then
Calendar1.Value = Target.Value
End If
Call MoveToTarget
End Sub
這是標記,因爲我的文本框不是日期格式? 我可以根據要求分享完整的代碼,這只是它的很多,我不想添加到我已經很長的帖子。
這裏是爲datepickerform代碼:
Option Explicit
Private WithEvents Calendar1 As cCalendar
Public Target As Range
Private Sub Calendar1_Click()
Call CloseDatePicker(True)
End Sub
Private Sub Calendar1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyEscape Then
Call CloseDatePicker(False)
End If
End Sub
Private Sub UserForm_Initialize()
If Calendar1 Is Nothing Then
Set Calendar1 = New cCalendar
With Calendar1
.Add_Calendar_into_Frame Me.Frame1
.UseDefaultBackColors = False
.DayLength = 3
.MonthLength = mlENShort
.Height = 120
.Width = 180
.GridFont.Size = 7
.DayFont.Size = 7
.Refresh
End With
Me.Height = 153 'Win7 Aero
Me.Width = 197
End If
End Sub
Public Sub MoveToTarget()
Dim dLeft As Double, dTop As Double
dLeft = Target.Left - ActiveWindow.VisibleRange.Left + ActiveWindow.Left
If dLeft > Application.Width - Me.Width Then
dLeft = Application.Width - Me.Width
End If
dLeft = dLeft + Application.Left
dTop = Target.Top - ActiveWindow.VisibleRange.Top + ActiveWindow.Top
If dTop > Application.Height - Me.Height Then
dTop = Application.Height - Me.Height
End If
dTop = dTop + Application.Top
Me.Left = IIf(dLeft > 0, dLeft, 0)
Me.Top = IIf(dTop > 0, dTop, 0)
End Sub
Sub CloseDatePicker(Save As Boolean)
If Save And Not Target Is Nothing And IsDate(Calendar1.Value) Then
Target.Value = Calendar1.Value
End If
Set Target = Nothing
Me.Hide
End Sub
日曆日期選擇器是它自己的對象,並且必須在您的用戶表單中創建。用戶窗體的初始化代碼可以創建該日期選擇器對象,並在用戶窗體上選擇日期控件時取消隱藏它。運行時錯誤正在抱怨,因爲您尚未在任何地方創建日期選擇器對象。如果要在用戶窗體之外創建日期選取器對象,則創建用戶窗體的屬性以將外部日期選擇器對象分配給用戶窗體變量。 – PeterT
經過一段時間的玩,我得到了自定義日期選擇器表單彈出時,當我選擇我的主要用戶表單的指定文本框,但是當我選擇一個日期,它不會改變文本框的值。我實際上完全不用上面的userform activate,它會彈出並正確關閉,它只是不更新文本框的值。 – Awill
沒有看到日期選取器的代碼,或瞭解更多關於它的信息,我無法告訴日期選取器對象如何/如何更新,即如何將日期選擇器連接到您的文本框(或工作表單元格,或任何其他)。 – PeterT