【发布时间】:2013-10-20 05:53:32
【问题描述】:
我有一个 Worksheet_BeforeDoubleClick 事件,用于检查单击的单元格是否具有 Dictionary 对象中的数据,如下所示:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target as Range, Cancel as Boolean)
Dim dict as Dictionary
Dim df as New dictFactory
'returns a dictionary populated with all list items
Set dict=df.create
If dict.Exists(Target.Value) Then
MsgBox "Exists"
Else
MsgBox "Doesn't exist"
End If
End Sub
问题在于,这需要在每次单击单元格时创建一个新字典。我认为将字典存储在其自己模块中的全局变量中会很好,如下所示:
Global valuesDict As New Dictionary
然后在打开工作簿时填充它:
Private Sub workbook_open()
Dim df as New dictFactory
Set valuesDict=df.create
End Sub
但我在测试过程中遇到了很多问题,因为有很多条件可以重置全局变量的值(如 here 所讨论的)。
如何存储一个对象,以便只要工作簿打开,在重复调用我的BeforeDoubleClick 事件期间,它的值就可用?
【问题讨论】:
-
使您的代码稳定,这将是保持
Public variable价值的最佳保证。顺便说一句,为什么是Global而不是Public? -
将其存储为全局,但在使用之前检查它是否为
Nothing:如果不存在则使用df.Create重新创建它