求教有關UserForm使用完後不佔記憶體的清除方法
- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2025-7-5
|
本帖最後由 luhpro 於 2016-3-26 00:21 編輯
回復 1# clio
以下是 Excel VBA 的說明 :
一般當使用 Set 來引用物件給變數時,
並非複製一份物件給變數,
而是建立一份對該物件的引用。 (註 : 這裡所謂的引用, 最簡單的例子就是Excel活頁簿中某個儲存格的位址, 藉由這個位址可以引用到<取得>此儲存格的內容,字型...)
超過一個以上的物件變數可以引用相同的物件。
因為變數是引用該物件,
而不是引用該物件的複製品,
該物件若改變,
則所有引用它的變數也會跟著改變。
然而,若在 Set 陳述式上使用 New 關鍵字,
則會真的建立該物件的執行個體。 (註 : 雖然建立了 一個物件, 該變數仍然還是一份對該物件的引用)
所以 Set AForm = Nothing 其實只是清空該變數 (失去引用功能),
完全沒有動到該物件的本體.
至於 Unload 的說明 :
將一個物件自記憶體中移除。
顧名思義.
其實除非在程式執行過程中才動態建立物件,
否則當開啟檔案後記憶體內就已存了一份該物件的資料了.
最簡單的驗證方式 -
開啟Excel 存檔重開看看使用的記憶體空間量,
接著加個UserForm後存檔重開再看看使用的空間量,
會發現即使沒用程式 Load 或 Show 照樣使用的空間會較多.
當然若 Load 或 Show 了後空間會用更多. |
|
|
|
|
|
|
|