在工作表中单击菜单'开发工具'→'插入'→'控件工具箱',选择'其他控件'中的DTP控件如下图所示,就可以在工作表中添加一个DTP控件。 在设计模式下双击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事件,当选择工作表的B列第2行以下的单个单元格时显示日期控件供用户选择日期。 其中第3行代码设置显示日期控件的触发条件。只有当用户选择B列第2行以下单元格且只能选择单个单元格时才显示日期控件,Or Target.MergeCells这个条件是指合并单元格。 第4行到第8行代码显示日期控件并设置日期控件的大小等于所选单元格的大小。 第9行到第13行代码,如果单元格已经输入了日期,将单元格中的日期赋给日期控件,否则将当前日期赋给日期控件。 第15行代码如果选择的是其他列则隐藏日期控件。 第19行到第22行代码日期控件的CloseUp事件,将日期控件的值赋给活动单元格后隐藏日期控件。 第23行到第29行代码工作表的Change事件,如果删除了B列单元格的日期则隐藏日期控件。 代码的运行: 选择后的工作表: 今日内容回向: 1 本例的控件是什么? 2 本例的控件是如何添加的? 3 日期代码的录入是否能清楚了? |
|