这是每秒更新一个单元格值的代码。
Sub showtimer()
If CStr(ThisWorkbook.Worksheets("Convergence_Plot").Cells(1, 3).Value) = "0" Then
Call startpostprocess
Exit Sub
End If
ThisWorkbook.Worksheets("Convergence_Plot").Cells(1, 3).Value = ThisWorkbook.Worksheets("Convergence_Plot").Cells(1, 3).Value - TimeSerial(0, 0, 1)
timetimer = Now + TimeValue("00:00:01")
Application.OnTime timetimer, "showtimer", , True
End Sub光标持续闪烁/显示蓝色处理光标。怎样才能避免呢?
发布于 2015-08-19 12:44:49
:Put
Application.Cursor = xlDefault作为你的潜水艇的第一行。至少当你这样做时,这是有效的:
Sub test()
Dim i As Long
Application.Cursor = xlDefault
For i = 1 To 100000
Debug.Print i 'to chew up time
Next i
MsgBox "Done!"
End Sub从开发人员的Excel选项卡中启动时,即使光标正在运行,它看起来也是正常的。我还没有用你的每秒发射潜艇的设置来测试它(这可能会导致一些闪烁)。
在编辑时:我测试了每秒都会调用sub的情况,发现仍然有闪烁。问题是,对Application.Cursor的更改在函数调用后不会持久。因此,在您的示例中,您没有看到蓝色的处理光标(至少我没有看到它),但是您看到光标每秒都在重置,这同样令人恼火。
这是一个潜在的解决方法。您的代码似乎是单元格C1中的倒计时。当倒计时到0时,子startpostprocess启动。大概你是按照你做的那样做的(每秒调用一次showtimer ),因为你想让Excel在倒计时期间可用。要做到这一点,一种方法是在倒计时期间连续运行Excel子程序(这样它对光标的更改就不会超出范围),并使用DoEvents保持Countdown响应:
Sub Countdown(n As Long)
Application.Cursor = xlDefault
Dim start As Double
Do While n >= 0
ThisWorkbook.Worksheets("Convergence_Plot").Cells(1, 3).Value = n
start = Timer()
Do While Timer < start + 1
DoEvents
Loop
n = n - 1
Loop
startpostprocess
End Sub
Sub StartCountDown()
Countdown ThisWorkbook.Worksheets("Convergence_Plot").Cells(1, 3).Value
End Sub我将单元格C1中的时间值更改为一个简单的整数计数器。当我将10放入C1并调用StartCountDown时,单元格将以1秒的增量变为10,9,8,...,1,0,然后startpostprocess (我为其创建了一个存根,它将弹出一个msgbox)启动。可以在倒计时期间编辑单元格。
https://stackoverflow.com/questions/32086555
复制相似问题