【发布时间】:2016-09-05 23:36:46
【问题描述】:
我遇到了一个全局变量超出范围的问题。我在“ThisWorkbook”中定义了一个公共变量:
Public dict As Scripting.Dictionary
这在“Workbook_Open()”中被初始化
Set dict = New Scripting.Dictionary
初始化后,我运行一个 Sub(代码仍位于“ThisWorkbook”中),用自定义类的 ID 和实例填充此字典。
我在其他模块中使用这个 dict 变量时遇到了麻烦。目标是构建工作表能够调用的许多公共函数。这些函数在字典中的自定义类中操作/检索/等数据。
例如,这个测试子(ModuleXYZ 中的代码)抛出“Object variable or With block variable not set”
Private Sub TestSub()
Dim x As Integer
x = ThisWorkbook.dict.Count
End Sub
这是我第一次开始这个编码项目时遇到的相同错误,当字典超出“ThisWorkbook”模块的范围时,我必须重做“Set dict = New Scripting.Dictionary”
我希望通过将 dict 设置为“ThisWorkbook”中的公共变量,它会在此工作簿打开的整个过程中保持在范围内。
谢谢-KC
【问题讨论】:
-
只要您不做任何事情来重置项目,它就应该保留(所有公共变量也是如此)。