:將
Application.Cursor = xlDefault
正如你分的第一行。至少,這工作,當你做這樣的事情:當這是從開發者的標籤在Excel中推出的光標看起來即使它運行正常
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
。我沒有用你每秒啓動子系統的設置進行測試(這可能會導致閃爍)。
關於編輯:我測試了每秒調用sub的情況,並且看到仍然有閃爍。問題是,對Application.Cursor
的更改不會持續超過函數調用。所以在你的情況下,你沒有看到藍色處理光標(至少我沒有看到它),但你看到光標每秒都會重置,這同樣令人討厭。
這是一個潛在的解決方法。您的代碼似乎是在單元格C1中倒計時。當倒數到達0時,啓動子startpostprocess
。大概你是這樣做的(每秒鐘撥打showtimer
),因爲你希望Excel在倒計時期間可用。實現的方法之一就是有一個Countdown
子在倒計時過程中連續運行(因此它的變化將光標不出去的範圍),並使用DoEvents
保持Excel的響應:
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中的值賦給一個簡單的整數計數器。當我在C1中放置10並調用StartCountDown
時,單元以1秒爲增量變爲10,9,8,...,1,0,然後startpostprocess
(我爲它創建了一個存根,彈出一個msgbox)啓動。在倒計時期間可以編輯單元格。
光標仍然閃爍。在這背後是否正在改變細胞的價值? – Kartiki
@Kartiki我看到了問題。希望在編輯中的解決方法可以工作。 –