我有一個運行了很長時間(可能幾天,它執行數據採集)的Excel VBA宏。它最初是爲Excel 2003編寫的,並具有自定義工具欄和菜單。 我最近使用RibbonXML將其更新爲使用Ribbon界面。Excel VBA功能區getEnabled在代碼運行時不會調用
當宏運行我想禁用某些界面元素(如「開始測試」),並讓其他人(如「停止測試」按鈕。)
我的問題是,電話到ribbon.invalidate只處理後宏代碼已經運行完成。
你可以很容易地看到一個簡單的測試程序
Sub test()
ribbon.Invalidate
DoEvents
Sleep (5000)
End Sub
在碳帶的debug.print「getEnabled」這種效果回調將看到僅在5秒睡眠結束付諸行動。
有什麼辦法可以強制使用ribbon.Invalidate可以在那裏激活嗎?
::編輯1 ::
我創建了一個小的演示工作簿ilustrate問題: http://www.bodgesoc.org/Button_Demo.xlsm
::編輯2 ::
不同的論壇的成員發現解決方案,儘管它是一個稍微醜陋的。 我想這可以現在被標記爲「回答」,但一個更優雅的解決方案,將不勝感激。
Application.ScreenUpdating = False
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)"
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",True)"
Application.ScreenUpdating = True
謝謝,我確實想知道允許代碼實際停止,並排隊這樣的定時程序,但我擔心它可能最終以不可預知的方式行事。但是現在我知道別人有這個想法,我至少說服了它並不是完全瘋了,我可能會放棄它。 – bodgesoc