所以我有一个字典,它在模块的两个不同子目录中包含相同的键和值。也就是说,在子代码中有一些重复的代码,它们是:Dim Dict As Scripting.Dictionary和Dict.Add Key,使用Value来填充它。我以为应该将字典设为全局/模块级别的变量,但是在弄清楚如何在更大范围内填充字典时遇到了麻烦。
我的模块开始看起来像:
Option Explicit
Option Compare Text ' for some other stuff I need to do
Public Dict As Scripting.Dictionary
只是将Dict.Add放在任何子命令之前似乎都不起作用,我得到一个编译错误:无效的外部过程。
任何提示或技巧将不胜感激!
答案 0 :(得分:0)
假设您已将Microsoft脚本运行时添加到项目引用中,那么这应该可以工作。
Option Explicit
Option Compare Text
Public Dict As New Scripting.Dictionary
Sub d1()
Dict.Item(1) = 2
End Sub
Sub da()
Dict.Item("a") = "b"
End Sub
但是,如果您期望您的公共词典包含vbTextCompare的dict.CompareMode,那将是错误的。 CompareMode属性将为vbBinaryCompare,并且CompareMode只能在空字典中设置。
如果您的字典需要vbTextCompare,则可能是这样的。
Option Explicit
Option Compare Text
Public Dict As New Scripting.Dictionary
Sub d1()
if dict.count = 0 then dict.comparemode = vbtextcompare
Dict.Item(1) = 2
End Sub
Sub da()
if dict.count = 0 then dict.comparemode = vbtextcompare
Dict.Item("a") = "b"
End Sub