电子表是儿时的一个记忆,那个时候,为了戴上一个漂亮的电子表不知道有多么开心,儿时年幼时间并不是什么重要的东西,反正对时间也没有概念,主要是在同学面前伸出手腕那一瞬间的自豪才觉得无比喜悦。
为了回忆童年,也为了追忆逝去的时间,本节主要介绍一下,如何利用VBA来制作一个7位码时间显示效果。
下图为例:
特点:
时间大小可以任意调整。
数字颜色可任意修改。
利用绘制Shape对象图形来达到构建数字效果。
时间调用当前电脑时间进行显示。
上图为:图形对象参数设置表。
对于时间数字大小,可修改本表,以实现其显示的位置、大小以及颜色。
设计代码之初就为了可调节性进行了考虑,所以在不同的应用环境下,稍加修改得以使用。
上图为时间数字显示状态表,本表是固定格式,不能随意更改。
也就是说本表定义了两个状态,一个True,一个False。
True表示显示,False表示隐藏。
本例的显示逻辑为,在首先在Excel中绘制四个时间数字,即小时和分钟的时间数字。
然后提取当前系统时间,分别判断数字,对绘制的小时和分钟进行显示和隐藏属性设置。
最终达到显示效果。
下面看一下代码实现过程:
按钮代码
PrivateSubShowTime()DelDagit'清除Excel图形DimsAsWorksheetDimxRAsRange,RAsRangeSets=("Sheet3")SetxR=("A2:A8")''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''设置小时DimnAsInteger,HoHo=((Time),"0")n=(Mo)Fori=1TonSetTimeNumberxR,(Mo,i,1),i+3NextiSub
绘制数字过程:
PrivateSubSetTimeNumber(xRAsRange,nx,i)DimWx,HxWx=((1).Offset(0,4).Value)*2Hx=((1).Offset(0,3).Value)DimPobj()AsObjectErasePobjForEachRInxRReDimPreservePobj()SetPobj()=_(msoShapeRectangle,(0,2)+(i-1)*(Wx+Hx),(0,1),(0,4),(0,3))WithPobj().=RGB(10,12,22).Visible=True'.=(0,5)WithNextRIfnx11ThenSetVisiblePobj,nx'设置隐藏IfSub
设置隐藏部分:
PrivateSubSetVisible(Pobj,nx)DimsRAsRangeSetsR=("Sheet2").Range("A2:A11")DimvxAsVariant,sAsIntegers=0ForEachvxInPobjs=s+1=(nx+1).Offset(0,s)NextvxSub
时间关系,没有做成动态显示,有兴趣的朋友可做一个试试。
其实,做这个的目的并没有什么意义,一个Time函数就可以实现时间显示,如果说意义的话,应该是可以提高一下逻辑能力。
总结:
本节编码过程中需要用到一些基础的内容知识:
字符截取函数:Mid(String,n,n)
时间函数:Time
小时函数:Hour(Time)
分钟函数:Minute(Time)
格式化函数:Format(String,"0#")
Shape对象AddShape()方法
(row,column)方法
过程调用