我希望工作表事件处理程序可以使用词典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,然后在下次双击并到达相同断点时,dict
为Nothing
。似乎过早地结束_beforedoubleclick
sub具有取消分配dict
的效果。我该如何防止这种情况发生?我想让这个公共变量在调试时保持其值。
答案 0 :(得分:0)
你不能阻止它发生。如果在运行代码时需要分配公共变量(除了consts),则需要在运行的任何代码的开头调用初始化方法来检查它们是否已分配,如果没有,则分配它们。