Excel 公共字典-如何访问数据

Excel 公共字典-如何访问数据,excel,vba,Excel,Vba,我正在工作簿_Open()上的VBA中设置公共词典。我想在电子表格中创建的任何模块中访问此词典中的项目 我在本工作簿中的代码是: Option Explicit Public Dic As Scripting.Dictionary Private Sub Workbook_Open() Set Dic = New Scripting.Dictionary Dic.Add Key:="cat", item:="Database" Dic.Add Key:="pwd", i

我正在工作簿_Open()上的VBA中设置公共词典。我想在电子表格中创建的任何模块中访问此词典中的项目

我在本工作簿中的代码是:

Option Explicit
Public Dic As Scripting.Dictionary

Private Sub Workbook_Open()
    Set Dic = New Scripting.Dictionary
    Dic.Add Key:="cat", item:="Database"
    Dic.Add Key:="pwd", item:="Password"
    Dic.Add Key:="col", item:="Server"  
End Sub
当我转到任何模块并使用
msgbox
函数调用某个项目时,它都不起作用:

MsgBox (Dic("col"))
有什么建议,请告诉我如何使这项工作

我们的想法是在电子表格的开始处设置此词典,并在任何后续模块中访问它


干杯

我可以看到,您已经在私有ThisWorkbook代码表中对Dic脚本字典进行了“公开”声明。这使得它可用于私有ThisWorkbook代码表中的任何子过程

要使其可用于任何代码表中的任何子过程,请将其放入任何一个公共模块代码表的声明区域(即顶部)。这将允许您仍然从打开的专用工作簿填充dictionary对象,并保留要在项目中任何位置使用的填充值


Hey@Tom,不是。我创建了一个新模块并完成了以下操作:Option Explicit
Option Private module Public Function test()MsgBox(Dic(“col”))End Function
Move
Public Dic As Scripting.Dictionary
到公共模块的声明区域(又名top)。@Jeeped-我很困惑。很抱歉你的意思是我必须在使用Dic的任何模块中再次声明Dic吗?我想我只能在这本工作簿上做一次,并将其作为全球词典。对不起,伙计,困惑了……不,把它从这个工作簿的私有代码表中拿出来,放到一个公共模块代码表中。@Jeeped-我知道哪里出了问题。非常感谢你,伙计。想把它添加到答案中,我会把它标记正确吗?