从 VBA 中的另一个模块调用字典及其变量

Calling a Dictionary and its Variables from Another Module in VBA

我在一个模块(模块 6)中存储了一本字典:

Sub WebcamDict() 


    Dim dict As Object, Key, val 
    Set dict = CreateObject("Scripting.Dictionary") 


    Key = "14 Mile Hill North": val = Array("URL", "Title") 
    dict.Add Key, val 
    Key = "14 Mile Hill South": val = Array("URL", "Title") 
    dict.Add Key, val 
    Key = "Ash Fork East": val = Array("URL", "Title") 
    dict.Add Key, val 
    ... 

End Sub

在另一个模块中,我试图像这样调用字典及其变量:

Sub Images() 
    Call Module6.WebcamDict 

    ComboBoxList = Array(CStr(ComboBox4), CStr(ComboBox5), CStr(ComboBox6), CStr(ComboBox7)) 


    i = 1 


    For Each Ky In ComboBoxList 
        ActiveWindow.Selection.SlideRange.Shapes("Webcam" & CStr(i)).Fill.UserPicture (dict.Item(Ky)(0)) 
        ActiveWindow.Selection.SlideRange.Shapes("Webcam" & CStr(i)).TextFrame.DeleteText 
        ActiveWindow.Selection.SlideRange.Shapes("Webcam" & CStr(i)).Line.Visible = msoFalse 
        ActiveWindow.Selection.SlideRange.Shapes("Webcam" & CStr(i) & "_Text").TextFrame.TextRange.Text = dict.Item(Ky)(1) 


        i = i + 1 


    Next 


    Set dict = Nothing 


End Sub

变量 "i" 和 "Ky" 似乎都可以正常工作 Debug.Print 语句。但是,我收到此行的错误(需要对象):

ActiveWindow.Selection.SlideRange.Shapes("Webcam" & CStr(i)).Fill.UserPicture (dict.Item(Ky)(0))

如果我只是将字典包含在同一个模块中,它会完美运行,但我需要从多个不同的模块调用它,所以我需要能够以某种方式调用它及其变量。有任何想法吗?谢谢!

从 sub 中删除 Dim dict As Object(保持其他一切不变)。在模块的顶部放置行

Public dict As Object

这会将 dict 变成一个全局变量,可以在项目的任何地方访问。在您当前的代码中,它是一个局部变量,当 WebCamdict returns.

时超出范围