无法将字典作为参数传递给VBA函数

时间:2016-04-04 20:30:43

标签: vba ms-access dictionary access-vba ms-access-2007

我有一个VBA函数应该将Dictionary作为参数:

Function ShowDict(Dict1 As Dictionary)
   For Each x In Dict1
        MsgBox (Dict1.Item(x))
   Next
End Function

我试图通过以下方式调用它:

Dim Dict As Dictionary
Set Dict = Dictionary
Dict.Add "Owner", "John"
Dict.Add "Employee", "Sam"
ShowDict (Dict)

在定义词典之前,我确实从References中选择了Microsoft Scripting References。但是,当我尝试使用'Dict'作为参数调用函数时,我得到一个编译错误,声明'参数不是可选的'。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

进行这两项更改(New DictionaryShowDict Dict):

Dim Dict As Dictionary
'Set Dict = Dictionary
Set Dict = New Dictionary
Dict.Add "Owner", "John"
Dict.Add "Employee", "Sam"
'ShowDict (Dict)
ShowDict Dict

另外,我建议您将Option Explicit添加到代码模块的声明部分,并在Dim x函数中添加ShowDict。缺少这些不会导致眼前的问题,但添加它们可以防止将来出现其他问题。