如何调整VBA倒计时器速度,实现15秒完成30到0全计数流程
解决方法
核心逻辑:要在15秒内完成30到0的倒计时,等价于实际每经过0.5秒,倒计时数值减1,基于你最早的30秒倒计时代码修改即可,可用代码如下:
Sub countdown() Dim 实际总时长 As Date, 倒计时当前值 As Integer ' 实际运行总时长设为15秒,对应倒计时数字从30走到0 实际总时长 = DateAdd("s", 15, Now()) Do Until 实际总时长 < Now() DoEvents ' 按比例换算:剩余实际时间 * 2 就是要显示的倒计时数值,取整即可 倒计时当前值 = Round(DateDiff("s", Now(), 实际总时长) * 2, 0) ' 边界处理避免出现负数 If 倒计时当前值 < 0 Then 倒计时当前值 = 0 oSh.TextFrame.TextRange = CStr(倒计时当前值) Loop End Sub
你之前自行调整的代码未达预期的原因:
- 自定义的CounterStart=400、CounterEnd=100的区间和你需要的30-0倒计时需求完全不匹配,逻辑偏离
- 没有做速度比例换算,还是按照1秒对应1个数值的逻辑运行,无法实现每秒展示2个数字的效果
内容的提问来源于stack exchange,提问作者Bhavesh Shaha
相关产品推荐
相关产品推荐

