我的Excel工具執行的任務很長,我正在嘗試通過在狀態欄中或工作表中某些單元格中提供進度報告來對用戶友好,如下所示。但是屏幕不刷新,或在某個時候停止刷新(例如33%)。任務最終完成,但是進度欄沒有用。我該怎么做才能強制更新屏幕?For i=1 to imax ' imax is usually 30 or so fractionDone=cdbl(i)/cdbl(imax) Application.StatusBar = Format(fractionDone, "0%") & "done..." ' or, alternatively: ' statusRange.value = Format(fractionDone, "0%") & "done..." ' Some code.......Next i我正在使用Excel 2003。
3 回答

慕容708150
TA貢獻1831條經驗 獲得超4個贊
更改文本或格式后,有時工作表中的文本框不會更新,甚至DoEvent命令也無濟于事。
由于Excel中沒有命令以刷新用戶表單的方式刷新工作表,因此有必要使用技巧來強制Excel更新屏幕。
以下命令似乎可以解決問題:
- ActiveSheet.Calculate
- ActiveWindow.SmallScroll
- Application.WindowState = Application.WindowState

暮色呼如
TA貢獻1853條經驗 獲得超9個贊
具體來說,如果您正在處理UserForm,則可以嘗試Repaint方法。如果您在表單中使用事件觸發器,則可能會遇到DoEvents問題。例如,函數運行時按下的任何鍵都將由DoEvents發送。鍵盤輸入將在屏幕更新之前進行處理,因此,如果要通過按住鍵盤上的箭頭鍵之一來更改電子表格上的單元格,則單元格更改事件將在主功能完成之前繼續觸發。
在某些情況下,不會刷新用戶窗體,因為DoEvents會觸發事件。但是,即使另一個事件緊接在前一個事件之后,Repaint也會更新UserForm,并且用戶將在屏幕上看到更改。
在UserForm代碼中,它很簡單:
Me.Repaint
- 3 回答
- 0 關注
- 1734 瀏覽
添加回答
舉報
0/150
提交
取消