我在Excel中创建了一个小型发票系统,它利用了VBA中的宏。系统的导航包括一个数字时钟,以HH:MM:SS格式显示时间:
时钟只是一个带文本的绘制矩形,只是一个U.I元素,除了视觉外观之外不用于任何其他内容。它通过递归VBA函数每秒更新一次:
Sub updateTime()
If (Not ActiveSheet.Name = "srcFacilities" And Not ActiveSheet.Name = "srcAnimals" And Not ActiveSheet.Name = "attrs") Then
ActiveSheet.Shapes.Range(Array("timeRec")).TextFrame2.TextRange.Characters.Text = Format(Time, "hh:mm:ss")
End If
Application.OnTime Now + TimeValue("00:00:01"), "updateTime"
End Sub
系统在没有Windows任务栏的情况下全屏运行,因此时钟是时间的有用指标。
在测试中,用户抱怨的一个问题是时钟的更新导致Excel暂时冻结大约1/4秒&显示'wait'光标。这导致用户变得沮丧(可以理解)。系统本身是可用的,但这个问题很烦人,所以我想解决它。
是否可以更新形状内的文字,而 Excel会在每次更新时暂时冻结?
我尝试将形状更改为文本框并使用ActiveSheet.TextBoxes("timeRecTest").Text = Format(Time, "hh:mm:ss")
进行更新,但结果相同。