乔山办公网我们一直在努力
您的位置:乔山办公网 > ppt怎么做 > 头条发文--用VBA时间触发器Application.OnTime实现Excel时钟转动-ppt触发器

头条发文--用VBA时间触发器Application.OnTime实现Excel时钟转动-ppt触发器

作者:乔山办公网日期:

返回目录:ppt怎么做

头条视频已经发布,但是视频的清晰度不是很够,用手机看看能好点。所以,我还是用发头条文章的方式进行介绍好一点。都知道在Excel静态的office组件里似乎做一个动态的时钟转动视乎有点不可能,但是我们只要认真研究,是可以的。怎么实现呢?我们需要一个VBA的特有对象,那就是时间触发器对象Application.OnTime,这个触发器虽说是一个对象,其实它也是一种带参数的方法,我们正式借助这个对象的时间跳变触发行为的功能实现动态的时钟转动。

好了,我们来看看有关时间触发器的知识储备。

一、认识时间触发器Application.OnTime

1.Application.OnTime参数

Application.OnTime(EarliestTime,Procedure as String,[LatestTime],[Schedule])

EarliestTime调用程序的时间

Procedure调用程序的程序名,类型String

LatestTime程序执行的结束时间,可选,默认不停调用

Schedule默认True:预定新的调用过程,False非预定调用新的过程

2.举例

Sub fslk()

'本程序在每天的12点运行yourproc过程"

Application.OnTime _

EarliestTime:=TimeValue("12:00:00"), _

Procedure:="YourProc"

End Sub

'被调用程序

Sub yourpc()

Cells.(1, 2).Value = 4423

End Sub

3.循环调用程序自身,并设置调用时间举例

Option Explicit '公共变量说明

Dim endtime As String

Sub oneminute() '主程序

endtime = Now + TimeValue("00:01:00")

Call updateself

End Sub

Sub updateself() '被调用程序

Sheet1.Cells(4, 3).Value = Format(Now(), "hh:mm:ss")

Application.OnTime Now + TimeValue("00:00:01"), "updateself", endtime, True

End Sub

此例子在单元格C4读秒持续显示,显示时间长度1分钟

二、在Excel中的界面实现

用形状自选图形绘制三根指针时、分、秒,钟表表盘(耐心一点),通过开发工具插入三个表单控件按钮,设置A1:C2区域单元格格式。效果如下图所示

头条发文--用VBA时间触发器Application.OnTime实现Excel时钟转动

图1 钟表界面设计

三、分别实现模块外部公有变量定义以及启动、暂停、复位时钟的几大功能

1、定义外部全局公有变量:

Public TimeOn As Double '定义一个公有的全局瞬时时间变量TimeOn,便于程序执行回传数据

Public shp_clock_date As Shape

头条发文--用VBA时间触发器Application.OnTime实现Excel时钟转动

图2 定义全局公有变量

2、启动时钟的功能实现代码

Sub Start_Rotate_Clock() '启动时钟

Dim shp As Shape

Set shp_clock_date = Sheets(1).Shapes("clock_date")

shp_clock_date.TextFrame2.TextRange.Text = Format(Date, "yyyy-mm-dd")

shp_clock_date.TextFrame2.TextRange.Font.Fill.ForeColor.SchemeColor = 0

shp_clock_date.TextFrame2.TextRange.Font.Size = 15

shp_clock_date.TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter

Set shp = Sheets(1).Shapes("arrow_s")

soffset = VBA.Second(Now) * 6

shp.Rotation = soffset

Sheets(1).Cells(2, 3) = VBA.Second(Now)

Set shp = Sheets(1).Shapes("arrow_m")

moffset = VBA.Minute(Now) * 6 + VBA.Second(Now) / 10

shp.Rotation = moffset

Sheets(1).Cells(2, 2) = VBA.Minute(Now)

Set shp = Sheets(1).Shapes("arrow_h")

hoffset = (VBA.Hour(Now) Mod 12) * 30 + (VBA.Minute(Now) / 2)

shp.Rotation = hoffset

Sheets(1).Cells(2, 1) = VBA.Hour(Now)

TimeOn = Now + TimeSerial(0, 0, 1)

Application.OnTime TimeOn, "Start_Rotate_Clock", , True '触发定时器开始计时

End Sub

注释如下图所示

头条发文--用VBA时间触发器Application.OnTime实现Excel时钟转动

图3 启动时钟功能代码及注释

3、暂停时钟的功能实现代码

Sub Stop_Rotate_Clock()

On Error Resume Next

Application.OnTime TimeOn, "Start_Rotate_Clock", , False

On Error GoTo 0

End Sub

注释如下图所示

头条发文--用VBA时间触发器Application.OnTime实现Excel时钟转动

图4 暂停时钟功能代码及注释

4、复位时钟的功能实现代码

Sub Reset_Clock()

On Error Resume Next

Application.OnTime TimeOn, "Start_Rotate_Clock", , False

On Error GoTo 0

Dim shp As Shape

Set shp_clock_date = Sheets(1).Shapes("clock_date")

shp_clock_date.TextFrame2.TextRange.Text = Format("0000-00-00", "yyyy-mm-dd")

shp_clock_date.TextFrame2.TextRange.Font.Fill.ForeColor.SchemeColor = 0

shp_clock_date.TextFrame2.TextRange.Font.Size = 15

shp_clock_date.TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter

Set shp = Sheets(1).Shapes("arrow_s")

shp.Rotation = 0

Sheets(1).Cells(2, 3) = "--"

Set shp = Sheets(1).Shapes("arrow_m")

shp.Rotation = 0

Sheets(1).Cells(2, 2) = "--"

Set shp = Sheets(1).Shapes("arrow_h")

shp.Rotation = 0

Sheets(1).Cells(2, 1) = "--"

End Sub

注释如下图所示

头条发文--用VBA时间触发器Application.OnTime实现Excel时钟转动

图5 复位时钟功能代码及注释

四、运行结果展示

头条发文--用VBA时间触发器Application.OnTime实现Excel时钟转动

图6 启动时钟

头条发文--用VBA时间触发器Application.OnTime实现Excel时钟转动

头条发文--用VBA时间触发器Application.OnTime实现Excel时钟转动

图8 复位时钟

以上就是利用触发器在Excel中实现时钟转动功能,有人也许会问,能否在PPT中制作在PPT播放时自动呈现转动的时钟呢?我回答是肯定可以的,只不过呢,PPT的VBA没有Excel内置的Application.OnTime时间触发器,怎么办呢?我先给大家提醒一点,那就是利用通用的Timer隐式时间控件实现,有更多的大家可以下来交流哦!

同样,欢迎各位粉丝关注和点评哦,也感谢将我的头条号“跟我学Office高级办公”推广给身边的朋友哦,谢谢!

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网