我在过去两年中一直在教自己的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