加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

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

excel与vba

分类: Excel与VBA

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

               

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

                                     图一

   第一步

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

   第二步

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

   第三步

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

 

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

                                          图二    

    

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

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列的单元格试一试,看看怎么样,很酷吧。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有