首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于每秒运行的宏,光标持续闪烁

对于每秒运行的宏,光标持续闪烁
EN

Stack Overflow用户
提问于 2015-08-19 12:24:35
回答 1查看 2.2K关注 0票数 2

这是每秒更新一个单元格值的代码。

代码语言:javascript
复制
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

光标持续闪烁/显示蓝色处理光标。怎样才能避免呢?

EN

回答 1

Stack Overflow用户

发布于 2015-08-19 12:44:49

:Put

代码语言:javascript
复制
Application.Cursor = xlDefault

作为你的潜水艇的第一行。至少当你这样做时,这是有效的:

代码语言:javascript
复制
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响应:

代码语言:javascript
复制
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)启动。可以在倒计时期间编辑单元格。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32086555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档