【问题标题】:Return Dictionary from Function or Sub in VBA从 VBA 中的函数或子返回字典
【发布时间】:2014-04-28 15:18:57
【问题描述】:

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

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

【问题讨论】:

    标签: function excel dictionary subroutine vba


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2019-11-22
      • 2011-05-01
      • 1970-01-01
      • 2018-05-15
      • 2019-03-23
      • 2015-06-05
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多