看板 Office 關於我們 聯絡資訊
軟體:EXCEL 版本:2010 Sub n() For i = 1 To 999999 If ActiveCell > 20 Then Exit For ActiveCell.Offset(1).Select Next End Sub Sub y() Do Until ActiveCell > 20 ActiveCell.Offset(1).Select Loop End Sub 這兩種寫法的效果是一樣 但我不確定我的想法對不對 Q1:因為sub n有使用到變數i 所以會逐漸占用較大記憶體而降低效率 Q2:假如在end sub前面加一個Set i = Nothing 最後會使兩種巨集又恢復相同狀況 Q3:假設Q2為正確 雖然最後釋放變數了 但過程中還是有占用記憶體 所以還是Do Until的過程效率較好 非科班出身 還在摸索中 還請指教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.98.114.28 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1534297365.A.539.html
newacc: 我自己測試兩種寫法沒有顯著差異 08/15 23:59
newacc: Q1:那個i了不起就是佔一個long的記憶體,並不會隨時間而 08/16 00:00
newacc: 逐漸占用 08/16 00:00
newacc: 不是很確定你Q2寫的恢復相同狀況是什麼意思 08/16 00:01
newacc: 你現在兩種寫法,第一種的優點是,如果資料裡沒有>20的數 08/16 00:07
newacc: 程式在搜尋一定次數後就會停止,但第二種寫法會一直跑,跑 08/16 00:08
newacc: 到格子結束沒辦法往下offset才會跳錯誤停止 08/16 00:08
newacc: 而兩者效率都不高,因為你一直要求excel去選取新的格子 08/16 00:10
newacc: 提供我的測資和第三種寫法給你參考 08/16 00:15
newacc: http://bit.ly/2MuQg11 08/16 00:15
home0303: 謝謝N大指導 小弟研究看看 08/16 11:00