【问题标题】:How to keep public static variable from becoming unassigned?如何保持公共静态变量不被分配?
【发布时间】:2015-04-02 00:06:21
【问题描述】:

我希望有一个 Dictionary dict 可用于工作表事件处理程序,因此我将其存储在模块 GlobalVariables 中,如下所示:

Public dict As Dictionary

dictWorkbook_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

然后在断点停止后结束子,然后我下次双击并到达相同的断点时,dictNothing。似乎过早结束_beforedoubleclick 子会导致取消分配dict。我怎样才能防止这种情况发生?我想让这个公共变量在我调试时保持它的值。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2015-03-19
      • 2015-04-07
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 2012-05-04
      • 2016-11-14
      相关资源
      最近更新 更多