在 VBA 中声明和填充全球级别字典变量



所以我有一个字典,其中包含模块中两个不同子中的相同键和值。也就是说,在subs中有一些重复的代码,即: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 放在任何订阅之前似乎不起作用,我收到一个编译错误:外部过程无效。

任何提示或技巧将不胜感激!

假设您已将脚本运行时添加到项目引用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 的模式,你会错的。CompareMode 属性将是 vbBinaryCompare,并且只能在空字典上设置比较模式。

如果你的字典需要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

相关内容

  • 没有找到相关文章

最新更新