vba程式碼執行沒反應(vba強制停止執行怎麼辦)
高高興興地寫個Demo,卻不知是誰的錯
使用VB/VBA處理資料,當量較大時,是不是經常看見轉圈圈,而幹不了其他事情?如果點選滑鼠,是不是會提醒你結束某某應用程式?如果檔案未儲存,是不是寧願認慫,也不敢點結束?
有人說,資料量大了,VB/VBA就成了渣渣,是真心不太行耶。可是,有沒有想過為什麼呢?難道真的是因為資料量大,忙不過來嗎?
這要從Windows系統說起,話說晶片從早期的4004晶片的740kHz的頻率,到現在動輒N個GHz,為何在頻率上一路高歌猛進呢?現代通用計算機,都是分時、多道多工的,只有將時間切分得足夠細小,才能達到多工目的。
相信大家對閃電俠不陌生,中國武術裡,也講究天下武功唯快不破。只要你足夠快,彷彿時間都可以停下來等你。這對作業系統也是一樣的,硬體有細分時間的能力,系統也能捕捉到這種維度的變化,那麼系統就可以把硬體資源在一定時段上排程給儘可能多的任務。
人類可感知時間顆粒,最小也是幾十上百毫秒,這種粒度對於計算機而言,是一個可以做很多事情的時段了。反過來對人而言,這些很多序列的事情,卻可以認為是在同時工作,所以,我們在電腦上一邊可以聊天,一邊可以看電視,而互不影響。
但是,如何分配這種維度的時間資源,卻有不同的流派。有的流派認為,每個程式都是公平的,當然資源也得公平分配。而有的流派卻認為,這世間本就不公平,任何事情總會有輕重緩急。
Windows顯然屬於後者,所以也叫搶佔式系統。系統給每個執行緒都分配優先順序,優先順序高的將優先獲得系統資源,反之就需要排隊等待。為了兼顧公平,系統會整體權衡每個執行緒的優先順序,會降低那些長期霸佔資源的高優先順序執行緒的優先順序,這樣其他低優先順序執行緒,通過排隊總會有機會的。
當我們使用迴圈處理大資料時,需要長期佔用系統資源,這樣系統就會不斷地降低工作執行緒的優先順序,當低於其他執行緒優先順序時,當前工作執行緒就會被掛起等待。我們以為程式忙得不可開交,其實是因為被系統給掛起了。
這便是VB/VBA程式假死,不響應的最主要原因。歡迎關注BtOfficer,更多好料,不定期更新哦。