我在過去兩年中一直在教自己的Excel VBA,並且我有這樣的想法,即在代碼段末尾處理變量有時是適當的。舉例來說,我已經看到了它在該位改編自Ron de Bruin's code for transferring Excel to HTML完成:什麼時候應該將Excel VBA變量殺死或設置爲Nothing?
Function SaveContentToHTML (Rng as Range)
Dim FileForHTMLStorage As Object
Dim TextStreamOfHTML As Object
Dim TemporaryFileLocation As String
Dim TemporaryWorkbook As Workbook
...
TemporaryWorkbook.Close savechanges:=False
Kill TemporaryFileLocation
Set TextStreamOfHTML = Nothing
Set FileForHTMLStorage = Nothing
Set TemporaryWorkbook = Nothing
End Function
我已經做了這方面的一些搜索和發現以後如何做到這一點非常少,而在一個論壇上發帖a statement that no local variables need to be cleared,因爲它們不再存在於End Sub
。我猜根據上面的代碼,在End Function
或其他我沒遇到過的情況下可能不是這樣。
所以我的問題歸結爲:
- 有沒有什麼地方解釋的時候,爲什麼變量清理在網絡上,我只是還沒有找到它?
如果不是有人可以在這裏解釋一下......
- 當是爲Excel VBA變量清理必要的,當它是不是?
- 更具體地說......是否有特定變量的用途(公共變量? 功能定義的變量?)仍然存在加載到內存更長的時間比 潛艇做的,爲此可能會引起麻煩,如果我不乾淨 起來在我自己後?
謝謝GSerg,這個解釋清晰簡潔,給了我一個更好的變量管理意義。還有一個問題:你說「變量的訪問級別不影響它的生命週期」。你知道當一個值首先由活動代碼設置(start)並且代碼到達'End'標籤(完成)時,這個生命週期是否受到限制?或者當項目重置時它結束了嗎?我試着通過設置在另一個模塊中變暗的公共變量的值來測試這個理論,但變量從未出現在本地窗口中,所以我無法觀察它何時下降。 –
@KarlRookey公有vs私有不同於級別與程序級別。公共與私人不會影響生活時間。只要班級生活,班級就意味着變化的生活。只要項目未重置,模塊級別就意味着可變壽命。請注意,「生命」和「包含某物」不是synonims。變量可以存在幷包含「Nothing」。 – GSerg