返回目录: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区域单元格格式。效果如下图所示
三、分别实现模块外部公有变量定义以及启动、暂停、复位时钟的几大功能
1、定义外部全局公有变量:
Public TimeOn As Double '定义一个公有的全局瞬时时间变量TimeOn,便于程序执行回传数据
Public shp_clock_date As Shape
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
注释如下图所示
3、暂停时钟的功能实现代码
Sub Stop_Rotate_Clock()
On Error Resume Next
Application.OnTime TimeOn, "Start_Rotate_Clock", , False
On Error GoTo 0
End Sub
注释如下图所示
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
注释如下图所示
四、运行结果展示
以上就是利用触发器在Excel中实现时钟转动功能,有人也许会问,能否在PPT中制作在PPT播放时自动呈现转动的时钟呢?我回答是肯定可以的,只不过呢,PPT的VBA没有Excel内置的Application.OnTime时间触发器,怎么办呢?我先给大家提醒一点,那就是利用通用的Timer隐式时间控件实现,有更多的大家可以下来交流哦!
同样,欢迎各位粉丝关注和点评哦,也感谢将我的头条号“跟我学Office高级办公”推广给身边的朋友哦,谢谢!