将定时器添加到相邻小区

时间:2016-10-12 03:11:58

标签: excel-vba vba excel

感谢您回答上一个问题。现在我想启动计时器到达仪表板的相应单元格。在频繁更新期间,我的一个小区更新,票证到达仪表板上。一旦用实际时间更新单元格,我想将计时器运行到相应的单元格。一旦计时器超过15分钟,它应显示为红色。不确定这是否可行。请帮帮我。

1 个答案:

答案 0 :(得分:0)

您可以在此处找到有关计时器的信息:

How do I show a running clock in Excel?

此链接将向您展示如何在单元格值更改时运行sub(启动计时器)

automatically execute an Excel macro on a cell change

你应该创建一个变量来保持计时器开始的时间,以便你确定15分钟过去的时间,然后你可以改变单元格颜色,例如。

工作表(“Sheet1”)。范围(“A1”)。Interior.Color = vbRed

好的,我会帮你创建代码。您必须为您的特定工作表名称和范围稍微编辑它。在这个例子中,我有一个名为“timer”的工作表,当单元格A1中的值改变时,单元格B1中出现一个计时器,然后在15秒后B1变为红色(我做了15秒进行测试,你可以改为你需要的任何东西)。我也会在15秒过后关闭计时器,你可能想让它继续运行并更新单元格。

您希望将此代码添加到工作表中,其中包含将更改的数据(在我的情况下为“计时器”),重复,不要将此代码放在模块中,它必须在工作表的代码中< / p>

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("A1")) Is Nothing Then    
        StartTimer    
    End If    
End Sub

然后你想创建一个模块并添加这段代码

Public Declare Function SetTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long) As Long

Public TimerID As Long, TimerSeconds As Single, tim As Boolean
Dim Counter As Long
Dim StartTime As Date

Sub StartTimer()

    StartTime = Now()
    TimerSeconds = 1
    TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)

End Sub

Sub EndTimer()

    On Error Resume Next
    KillTimer 0&, TimerID

End Sub

Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, ByVal nIDEvent As Long, ByVal dwTimer As Long)

    Worksheets("timer").Range("B1").Value = Time

    If (Now - StartTime > TimeValue("00:00:15")) Then

        Worksheets("timer").Range("B1").Interior.Color = vbRed
        Worksheets("timer").Range("B1").Value = ""
        EndTimer

    End If

End Sub