Excel 利用日期控件输入时间

首先先在sheet1中插入一个日期控件DTPicker(日期拾取器)

然后输入代码:

 

ThisWorkBook中的代码:

 Private Sub Workbook_Open()
    '调整DTP控件的大小
    With Sheet1.DTPicker1
        '设置DTP控件的高度等于行高
        .Height = Sheet1.Cells(1, 4).Height
        '设置DTP控件的宽度略大于第三列的宽度,使得DTP控件的下拉按钮在单元格外
        '此处我们假设第三列的所有单元格的高度相同,否则在每次显示DTP控件时,
        '都应根据当前单元格调整控件大小
        .Width = Sheet1.Cells(1, 4).Width + 18
        .Visible = False
    End With
End Sub


 

Sheet1中的代码:

 

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 = 4 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

 

代码好了以后,在sheet1中,点击第4列(也就是D列)的任意单元格,就会出现选择时间的DTPicker

选择以后,就会在单元格留下刚才选择的日期。

怎么样,挺好玩的。哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值