VBA 中的两个进程

two processes in VBA

首先我要说我在VBA方面没有相关经验,但我非常需要在excel中制作一个计时器。我设法创建了计时器的停止和启动按钮。但我有 20 个不同的计时器,带有开始和停止按钮。我想创建一个按钮,它将自动启动所有计时器,同时让我单独停止一个计时器。

我生成了以下代码来启动和停止它们。但是当我停止其中一个计时器时,出现以下错误:“运行-time error '1004': Method 'onTime' of object'_application failed.

开始和停止两个按钮的代码是:

Sub startTimer27()
Application.OnTime Now + TimeValue("00:00:01"), "Increment_count27"
End Sub

Sub Increment_count27()
Range("B2").Value = Range("B2") + 1
Range("B11").Value = Range("B11") + 1
Range("B19").Value = Range("B19") + 1
Range("B25").Value = Range("B25") + 1
Range("B33").Value = Range("B33") + 1
startTimer27
End Sub

Sub stopTimer27()
Application.OnTime Now + TimeValue("00:00:01"), "Increment_count27", Schedule:=False
End Sub

您是否考虑过使用全局变量保存当前时间值?

Sub startTimer27()
starttime = Now
'MsgBox("The timer is running.")
End Sub

Sub stopTimer27()
timetaken = Now - starttime
MsgBox ("The time elapsed is " & Hour(timetaken) & ":" & Minute(timetaken) & ":" & Second(timetaken))
End Sub

当然你的例子更像是:

Public starttime(1 To 20) As Date
Sub cvbstartTimer27()
For i = 1 To 20
    starttime(i) = Now
Next
End Sub

如果您需要专门停止它,那么您也必须给它一个布尔值,当计时器为 运行 时为真,停止时为假。尽管如此,缺少此值并不意味着您的代码是错误的。