|
看着每秒跳动的时间,感觉到了时光的飞逝!大家看了有什么感想呢,想知道是怎么做的吗?
2009-9-26
首先感谢10楼提出还存在的问题,附件也已更新。
2009-9-26
今天将代码进行了一下精简,目前应该是没有冗余的东东了,本想1周后公布密码的,可是今天看到23楼已经破解了我的密码,并且公布了附件中的代码,既然这样,也就没什么秘密可言了。现在的附件已经删除了密码?
大家看看是不是很简单呢,我先简要说明一下,大家看了还有什么不明白的问题和更好的方法,都可以贴上来大家讨论。
首先:工作表中最主要的一个函数就是NOW(),对单元格格式进行一下简单的设置,就可以显示当前时间了,但是不能自动刷新。要想解决刷新的问题就要用到VBA 的ONTIME方法,和CALCULATE方法。
Sub trustwxq()
Sheets(1).Calculate
Application.OnTime Now + TimeValue("00:00:01"), "trustwxq"
End Sub
上面过程就可实现这一目标,其中Application.OnTime Now + TimeValue("00:00:01"), "trustwxq"语句的作用是以程序执行到本句的时间为基准,再过1秒钟调用过程"trustwxq",也就是过程本身,这样1秒后将执行过程中的Sheets(1).Calculate,也就是Sheets(1)重新计算,而这样一重算,工作表中的NOW()函数值已经发生变化(过了1秒),那显示时间的数字也就自然走了1秒,然后又是Application.OnTime Now + TimeValue("00:00:01"), "trustwxq",过一秒再计算表1……无限循环!。
有了上面的过程,主要任务已经实现,但是还存在一个问题:当同时打开两个工作簿的时候,你会发现除非关闭应用程序,否则只关闭本工作簿时,关了,他又打开,关了,他又打开,这一点是很讨厌的,这样就需要另外一个过程来关闭它,触发关闭这个过程的事件是关闭工作簿,于是就有了下面的代码:
Sub endwxq()
On Error Resume Next ‘因为当关闭一次后,没有trustwxq过程在执行,再关会出错,这一句是为了不显示出错信息的
Application.OnTime Now + TimeValue("00:00:01"), "trustwxq", , False
End Sub
这些是关闭工作薄得代码,因为篇幅原因就不祥讲了。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call endwxq ‘调用过程endwxq
End Sub
这是关闭工作薄前调用endwxq()过程的代码。因为我想在工作簿一打开的时候就显示sheet1,并且执行过程trustwxq,这一功能需要下面的代码:
Private Sub Workbook_Open()
Sheets(1).Activate ‘激活sheet1工作表
Call trustwxq ‘调用过程trustwxq
End Sub
至于其他的都没多大作用,属于锦上添花的了。
讲的不好,请大家多多包涵!
[ 本帖最后由 trustwxq 于 2009-9-27 19:39 编辑 ] |
|