繁体   English   中英

Excel - 当 Cell B 中的计时器达到 0 时,Cell A 的增量值

[英]Excel - Increment value of Cell A when timer in Cell B reaches 0

我有一个与此线程非常相似的问题: 使用计时器增加单元格值- 尝试向其添加评论而不是发布新线程,但没有 50 的声誉,所以我来了。

我在单元格 B7 的 Excel 工作表中有一个倒计时的计时器,我有启动和停止计时器的按钮,效果很好。 当计时器达到零时,我希望单元格 B8 中的值(当前设置为 1)增加 1,并且我希望它在每次重置计时器并随后回到零时执行此操作。

下面的代码是我为计时器本身编写的代码,没有尝试增加 B8 中的值:

Public interval As Date

Sub timer()

     interval = Now + TimeValue("00:00:01")

     If Range("B7").Value = 0 Then Exit Sub
     
     Range("B7") = Range("B7") - TimeValue("00:00:01")
     
     Application.OnTime interval, "timer"

 End Sub

Sub stop_timer()
     Application.OnTime EarliestTime:=interval, Procedure:="timer", Schedule:=False
 End Sub

当我尝试将计时器宏更改为"If Range("B8").Value = 0 Then Range("B8").Value = Range("B8").Value+1时出现问题

我试过几种不同的方式来使用它,但最终我遇到了某种语法错误或损坏的表达式,或者开始/停止按钮停止工作。 我确信我遗漏了一些简单的东西和/或可能有另一种方法可以做到这一点,但我对 VBA 几乎一无所知,并且只能通过一些在线搜索和大量修补才能做到这一点,所以将不胜感激任何能够提供帮助和指导的人。

谢谢!

好的,我完全重写了代码。

  1. 删除了对 Timer 的递归调用。
  2. 根据代码更改将检查值更改为零。
  3. 将 Stop_Timer 更改为仅将 B8 更改为零,然后调用 Check_Timer

这一切都按照书面规定进行。 它不会做的是让你停止计时器,然后从你离开的地方重新开始。 如果您需要该功能,我们将需要更多代码。 在此处输入图像描述

Dim Interval As Date

Sub Run_Timer()

   Interval = Now + TimeValue("00:00:01")
   Application.OnTime EarliestTime:=Interval, Procedure:="Check_Timer", Schedule:=True

End Sub 'Run_Timer()

Sub Check_Timer()

' Increment your counter before exiting.
     If ([B7]) = 0 Then
       [B8] = [B8] + 1
       Exit Sub
     End If
     
     [B7] = [B7] - TimeSerial(0, 0, 1)
     
     Call Run_Timer
     
End Sub 'Check_Timer

Sub Stop_Timer()

   [B7] = 0
   Check_Timer
     
End Sub 'Stop_Timer

HTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM