返回列表 上一主題 發帖

求教有關UserForm使用完後不佔記憶體的清除方法

求教有關UserForm使用完後不佔記憶體的清除方法

各位前輩,不好意思,又要來發問了
假如我自己作了一個UserForm1而,要開啟的他方法又有二種
方法一:
Sub Test_1()

    Dim AForm As UserForm1

    Set AForm = New UserForm1
   
    With AForm
        
        .Show
   
    End With
   
    Unload AForm
    Set AForm = Nothing
   
End Sub

方法二
Sub Test_2()

    UserForm1.Show
   
    Unload UserForm1

End Sub

想請教各位前輩的是:
一、在方法一內Unload AForm,這時視窗會消失,但是算是連佔用的記憶體都清掉了嗎?還是要再執行Set AForm = Nothing才會清掉記憶體呢?
二、另外我要是沒有執行Unload AForm,只執行Set AForm = Nothing,似乎視窗還在,但是理論上來說AForm佔用的記憶體應該
被清掉才對
三、這二種方法,有什麼優缺點之分別嗎?
clio

回復 2# luhpro

感謝前輩的解說,這個太清楚了,讓我更清楚的明白,Set 的意義,感謝您。
clio

TOP

回復 3# stillfish00

感謝前輩的指正跟說明,讓我更清楚的了解了一些事,我本來是考慮建立一個空白的UserForm,然後再用一個Function來呼叫它,而所有的載入資料,頡取回覆資料都由這個Function來處理取得,而Function又可以傳回資料,所以我就可以得到使用者選取的資料為何,而Function內載入的一些參數,可以決定ListBox的值,與一些選項參數,我也打算讓他成為強制選取,所以會取消✕按鍵的功能,使它失效,因為目前我找不到更好的方法來讓UserForm結束前,把使用者選取的資料傳出出來,目前只能用Public變數才能達到,但是我有些不想設這樣多Public 變數,所以才想改用此一方式。
clio

TOP

回復 4# jackyq

前輩的這個例子,解釋的很清楚說,前面三個LoadForm1都是重新LoadForm1,所以統計UserForm2.Count都為1
而後三個Set F1=New UserForm1,則是建立了另一個UserForm1,所以UserForm2.Count就會再加1
感謝前輩的例子
clio

TOP

        靜思自在 : 真正的愛心,是照顧好自己的這顆心。
返回列表 上一主題