VBA编程之放假倒计时器

用Excel做一个倒计时器,可以实时看到离某个时刻还有几秒,比如说你惦记着的某人的生日,或者你盼望的放假。
  • 用Excel先做出这样一个风格。
    这里写图片描述

  • 打开编辑器,键入如下代码,运行。

Private Sub Workbook_Open()
  Do
    Cells(2, 3) = Now                '填写系统当前时间
    dt1 = Now                        '系统当前时间送给变量
    dt2 = Cells(3, 3)                '目标时间送给变量
    dd = DateDiff("d", dt1, dt2) - 1 '求出时间差(天数)
    If dd < 0 Then dd = 0            '天数为负数时,调整为零
    s0 = DateDiff("s", dt1, dt2)     '求出时间差(秒数)
    If s0 <= 0 Then                  '秒数小于或等于零
      Cells(4, 3) = "时间到!"
      Exit Sub                       '退出子程序
    End If
    r = s0 - dd * 24 * 3600          '求出不足一天的剩余秒数
    hh = r \ 3600                    '将剩余秒数转换为时、分、秒
    mm = (r Mod 3600) \ 60
    ss = (r Mod 3600) Mod 60
    Cells(4, 3) = dd & "天  " & hh & "小时" & mm & "分" & ss & "秒"
    t = Int(Timer)                   '取系统计时器值(秒)
    Do While Int(Timer) = t          '系统计时器秒数未改变,则循环等待
      DoEvents                       '转让控制权给操作系统
    Loop
  Loop
End Sub
  • 实时效果如下:
    这里写图片描述

没有什么特别难懂的句法,特别说说转让控制权的用法。DoEvents 把控制权交给操作系统,以响应窗口重画、最大化、最小化等要求,避免出现应用程序不响应操作系统请求而被操作系统误以为死机了。
举个例子:在窗口中放一个textbox,然后写程序,循环从1到10万,然后循环体里面就是把这个数写到textbox里面,如果没有DoEvents,程序运行的时候就是死机一样,然后直到最后窗口显示10万,中间数字什么也看不见。
  如果在每次写了textbox以后,都来一下DoEvents,窗口就会重画,运行的时候就能看见textbox里面的数一个一个的长上去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆嵩

有打赏才有动力,你懂的。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值