在工作表中單擊菜單'開發(fā)工具'→'插入'→'控件工具箱',選擇'其他控件'中的DTP控件如下圖所示,就可以在工作表中添加一個(gè)DTP控件。 在設(shè)計(jì)模式下雙擊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行以下的單個(gè)單元格時(shí)顯示日期控件供用戶選擇日期。 其中第3行代碼設(shè)置顯示日期控件的觸發(fā)條件。只有當(dāng)用戶選擇B列第2行以下單元格且只能選擇單個(gè)單元格時(shí)才顯示日期控件,Or Target.MergeCells這個(gè)條件是指合并單元格。 第4行到第8行代碼顯示日期控件并設(shè)置日期控件的大小等于所選單元格的大小。 第9行到第13行代碼,如果單元格已經(jīng)輸入了日期,將單元格中的日期賦給日期控件,否則將當(dāng)前日期賦給日期控件。 第15行代碼如果選擇的是其他列則隱藏日期控件。 第19行到第22行代碼日期控件的CloseUp事件,將日期控件的值賦給活動(dòng)單元格后隱藏日期控件。 第23行到第29行代碼工作表的Change事件,如果刪除了B列單元格的日期則隱藏日期控件。 代碼的運(yùn)行: 選擇后的工作表: 今日內(nèi)容回向: 1 本例的控件是什么? 2 本例的控件是如何添加的? 3 日期代碼的錄入是否能清楚了? |
|