VBA编程之放假倒计时器

来源:互联网 发布:盘古网络模板 编辑:程序博客网 时间:2024/05/21 14:52
用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  LoopEnd Sub
  • 实时效果如下:
    这里写图片描述

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

0 0
原创粉丝点击