VBA经典代码 拿来即用 1.6 用Excel实现计时钟的效果
Excel在我们的日常工作中,最多是用来存储数据,处理数据,但是你知道Excel还可以用来做时钟吗?
当然,我们的这个时钟只能算是电子时钟,不过也是非常实用的
来看看如何实现的吧。
1.首先我们先找一个单元格,设置相关一下格式
2.为了展示的效果,也可以再继续设置一下单元格的样式,当然你也可以不设置,这里纯粹为了展示的效果而已
简单设置下这两个既可以了。
3.输入VBA代码
Dim dates As DateSub ks() dates = Now() + TimeValue('00:00:01') Application.OnTime dates, 'timessss'End SubSub timessss() Range('A1') = Format(Time(), 'h:mm:ss') Call ksEnd SubSub KillTimer() Application.OnTime dates, 'timessss', Schedule:=FalseEnd Sub
注意,这里会有三段代码
看看效果如何
从GIF中我们可以看到,我们成功地实现了在工作表的A1单元格展示了当前的时间,同时也可以根据需要在我们需要的时候,结束这个计时,甚至可以算是一个简易的计时器
代码解析
其实这里的代码很简单,纯粹是借用了VBA的application.ontime方法。
这是VBA中常用的时间方法,主要作用是到指定时间去做指定的事情
注意:
这里的这个事情,一定要另外写一个sub
一个开始计时,一个结束计时,为什么这里会有三个sub ,三个程序呢?
我们来看下。
计时按钮其实指向的是timesss这个模块,在程序开始的时候,现在A1单元格写入当前的时间,这里借用了format函数,限制了展示的模式
然后就来到
call ks
这句话是什么意思呢?
call是呼叫的意思,这里延伸一下,就是跳转去执行另外一个模块,ks
注意三者的顺序。
然后就来到了这个ks模块了。
我们知道他借用了application.ontime方法,
可能大家忘记 application.ontime的方法了,application.ontime+时间+执行的事件
那么我们要时间,就是dates
dates = Now() + TimeValue('00:00:01')
当前时间+1s,就是每隔1s的意思,每隔一秒去干什么呢?
就是后面的这个事件了,timessss
又回到了timessss,将A1的内容改写为当前的时间。
就是我们看到的A1的时间不断递增的效果了。
就是这么一个不断循环的过程,可以理解为这是一个死循环,跳不出来的
那么如何结束这个循环呢?
Application.OnTime dates, 'timessss', Schedule:=False
就是他
Schedule是关键字,当他等于false的时候,代表一个程序的终止和结束。