您的位置:首页 > 编程语言 > VB

VBA编程之放假倒计时器

2016-05-29 02:38 483 查看
用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里面的数一个一个的长上去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: