在VBA中从Function或Sub返回Dictionary

时间:2014-04-28 15:18:58

标签: function excel-vba dictionary subroutine vba

我想在一个子/函数中创建和初始化一个Dictionary对象,并在另一个子/函数中使用它。我可以在同一个子中做所有事情,但希望模块化代码。这将返回“参数不可选”,这是我尝试过的最新版本代码中的最新错误。我究竟做错了什么?

Function CreateDictionary() As Dictionary


Set aDictionary = New Dictionary

With aDictionary

    .Add Key:="key1", Item:="value1"
    .Add Key:="key2", Item:="value2"


End With


CreateDictionary = aDictionary
End Function

Sub useDictionary()

myDictionary = CreateDictionary

For Each k In myDictionary.Keys
    MsgBox myDictionary.k
Next



End Sub

1 个答案:

答案 0 :(得分:3)

1)CreateDictionary = aDictionary应为Set CreateDictionary = aDictionary
2)myDictionary = CreateDictionary应为Set myDictionary = CreateDictionary
3)MsgBox myDictionary.k应为MsgBox myDictionary(k)

正确的代码:

Function CreateDictionary() As Dictionary
    Dim aDictionary As Dictionary
    Set aDictionary = New Dictionary

    With aDictionary
        .Add Key:="key1", Item:="value1"
        .Add Key:="key2", Item:="value2"
    End With

    Set CreateDictionary = aDictionary
End Function

Sub useDictionary()
    Dim myDictionary As Dictionary

    Set myDictionary = CreateDictionary

    For Each k In myDictionary.Keys
        MsgBox myDictionary(k)
    Next
End Sub
相关问题