将表格中VB计时器从hh:mm:ss.00格式改为仅显示秒数
解决VB计时器显示总秒数的问题
我来帮你搞定这个计时器显示的问题!你的核心需求是把原来hh:mm:ss.00的格式改成直接显示累计总秒数(比如1分30秒显示90),其实不需要复杂的格式转换,因为你用的Timer()函数本身就是以秒为单位计算时间的。
问题分析
你代码里的Etime变量已经是累计经过的秒数了(比如1分30秒对应的Etime就是90.00),原来的Format操作是把秒数转成时分秒格式,现在我们反过来,直接把这个秒数的整数部分显示出来就行。
修正后的代码
把你原来的Label1.Caption = Format(...)那一行替换成直接显示秒数的整数部分,完整代码如下:
Dim StopTimer As Boolean Dim Etime As Single Dim Etime0 As Single Dim LastEtime As Single Private Sub CommandButton1_Click() StopTimer = False Etime0 = Timer() - LastEtime ' 恢复上次停止时的累计进度 Do Until StopTimer ' 计算累计秒数,保留两位小数(毫秒) Etime = Int((Timer() - Etime0) * 100) / 100 If Etime > LastEtime Then LastEtime = Etime ' 直接显示总秒数(自动去掉毫秒) Label1.Caption = Int(Etime) End If DoEvents ' 必须加这个,防止Excel假死 Loop End Sub ' 配套的停止按钮代码(如果需要) Private Sub CommandButton2_Click() StopTimer = True End Sub
关键说明
Int(Etime)会直接截断毫秒部分,如果你需要把毫秒四舍五入到秒,可以换成Round(Etime)。DoEvents一定要保留,不然循环会占用全部CPU,导致Excel无法响应停止按钮的点击。Etime0 = Timer() - LastEtime这行是为了支持暂停后继续计时,确保累计时间不会重置。
内容的提问来源于stack exchange,提问作者Jared
相关产品推荐
相关产品推荐

