如何防止公共静态变量被取消分配?

时间:2015-04-02 00:06:21

标签: excel vba excel-vba

我希望工作表事件处理程序可以使用词典dict,因此我将其存储在模块GlobalVariables中,如下所示:

Public dict As Dictionary

dict已在Workbook_Open事件中初始化:

Private Sub workbook_open()

Set dict = New Dictionary
dict.Add "abc", "def"

End Sub

这是Sheet1中的事件处理程序:

Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)

If dict Is Nothing Then
    Debug.Print "nothing"
Else
    Debug.Print "not nothing"
End If

End Sub

当我第一次打开工作簿并双击Sheet1中的单元格时,dict不是Nothing。但如果我在这一行上设置一个断点:

If dict Is Nothing Then

然后在断点处停止后结束sub,然后在下次双击并到达相同断点时,dictNothing。似乎过早地结束_beforedoubleclick sub具有取消分配dict的效果。我该如何防止这种情况发生?我想让这个公共变量在调试时保持其值。

1 个答案:

答案 0 :(得分:0)

你不能阻止它发生。如果在运行代码时需要分配公共变量(除了consts),则需要在运行的任何代码的开头调用初始化方法来检查它们是否已分配,如果没有,则分配它们。