在工作表中單擊菜單'開發(fā)工具'→'插入'→'控件工具箱',選擇'其他控件'中的DTP控件如下圖所示,就可以在工作表中添加一個DTP控件。
在設(shè)計模式下雙擊DTP控件寫入下面的代碼:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Me.DTPicker21
If Target.Count = 1 And Target.Column = 2 And (Not Target.Row = 1) Or Target.MergeCells Then
.Visible = True
.Top = Selection.Top
.Left = Selection.Left
.Height = Selection.Height
.Width = Selection.Width
If Target.Cells(1, 1) <> '' Then
.Value = Target.Cells(1, 1).Value
Else
.Value = Date
End If
Else
.Visible = False
End If
End With
End Sub
Private Sub DTPicker21_CloseUp()
ActiveCell.Value = Me.DTPicker21.Value
Me.DTPicker21.Visible = False
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 2 Or Target.MergeCells Then
If Target.Cells(1, 1).Value = '' Then
DTPicker21.Visible = False
End If
End If
End Sub
代碼截圖:
代碼解析:
第1行到第18行代碼工作表的SelectionChange事件,當(dāng)選擇工作表的B列第2行以下的單個單元格時顯示日期控件供用戶選擇日期。
其中第3行代碼設(shè)置顯示日期控件的觸發(fā)條件。只有當(dāng)用戶選擇B列第2行以下單元格且只能選擇單個單元格時才顯示日期控件,Or Target.MergeCells這個條件是指合并單元格。
第4行到第8行代碼顯示日期控件并設(shè)置日期控件的大小等于所選單元格的大小。
第9行到第13行代碼,如果單元格已經(jīng)輸入了日期,將單元格中的日期賦給日期控件,否則將當(dāng)前日期賦給日期控件。
第15行代碼如果選擇的是其他列則隱藏日期控件。
第19行到第22行代碼日期控件的CloseUp事件,將日期控件的值賦給活動單元格后隱藏日期控件。
第23行到第29行代碼工作表的Change事件,如果刪除了B列單元格的日期則隱藏日期控件。
代碼的運行:
選擇后的工作表:
今日內(nèi)容回向:
1 本例的控件是什么?
2 本例的控件是如何添加的?
3 日期代碼的錄入是否能清楚了?