2014-04-28 4 views
0

하나의 하위/함수에서 사전 개체를 만들고 초기화하고 다른 개체에서 사용하고 싶습니다. 나는 같은 하위에서 모든 것을 할 수 있지만 코드를 모듈화하고 싶습니다. 이것은 내가 시도한이 코드의 최신 버전의 최신 오류 인 "argument not optional"을 반환합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?Function 또는 Sub from VBA에서 반환

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 

답변

3

1) CreateDictionary = aDictionarySet CreateDictionary = aDictionary
2)가 myDictionary = CreateDictionarySet 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