4s店员工几点下班:在Excel目标列插入日期控件的方法

来源:百度文库 编辑:偶看新闻 时间:2024/04/27 15:10:28

在Excel目标列插入日期控件的方法

(2009-05-23 10:06:29)转载 标签:

excel与vba

分类: Excel与VBA

在EXCEL中,如果想在目标列插入日期控件,当单击目标列的某一单元格时,自动出现如图一所示的日历,由用户选择需要输入的日期,怎样做才能实现呢?下面我们以在工作表的第三列(C列)为插入日期的目标列为例,讲解具体步骤。

图一

第一步

在Excel中单击“视图”--“工具栏”--“控件工具箱”--“其它控件”,选择“Microsoft Date and Time Picker Control Version 6.0”控件,即DTP控件。

第二步

在Excel中插入(画出)这个DIP控件。

第三步

单击“工具”--“宏”--“Visual Basic编辑器”,在代码区分别在以下四个事件中输入相应的代码。如图二所示。

图二

以下是四个事件的相应代码。

Private Sub DTPicker1_CloseUp()
'禁用事件,在将DTP控件的值更新到单元格时,防止Worksheet_Change被误激活
Application.EnableEvents = False
ActiveCell.Value = Me.DTPicker1.Value
Me.DTPicker1.Visible = False
'启用事件
Application.EnableEvents = True
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
'判断是否只选中了单个单元格
If Target.Count = 1 Then
'如果删除第三列的单元格内容,则隐藏DTP控件
If Target.Column = 3 And Target = "" Then
Me.DTPicker1.Visible = False
End If
End If
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
Application.EnableEvents = False
If Target.Column = 3 Then
With Me.DTPicker1
.Visible = True
'调整DTP控件的位置,使其显示在当前单元格之中
.Top = Target.Top
.Left = Target.Left
If Target <> "" Then
'如果当前单元格已有内容,则设置DTP控件初始值为当前单元格日期,否则为系统当前日期
.Value = Target.Value
Else
.Value = Date
End If
End With
Else
Me.DTPicker1.Visible = False
End If
Application.EnableEvents = True
End If
End Sub


Private Sub Workbook_Open()
'调整DIP控件的大小
With Sheet1.DTPicker1
.Height = Sheet1.Cells(1, 3).Height
.Width = Sheet1.Cells(1, 3).Width + 18
.Visible = True
End With
End Sub

第四步

存盘,退出,再次打开刚保存的这个文件,点击C列的单元格试一试,看看怎么样,很酷吧。