2017-11-23 55 views
1

辞書を作成して奇妙な動作に直面した関数を書きました。関数内のキーだけで値を取得できます。私は、関数によって返された辞書でそれをしようとすると、私はRun-time error '450' 私のコードを受け取ります:このコードが実行されるとvbaの関数から辞書を返す。エラー450

Option Explicit 
Function year_range_dict() As Object 
    Dim d 
    Set d = CreateObject("Scripting.Dictionary") 
    d.Add "a", "aaa" 
    d.Add "b", "bbb" 
    d.Add "c", "ccc" 
    If d.Exists("c") Then 
     MsgBox d("c") 
     End If 
    Set year_range_dict = d 
End Function 
Sub DefaultRates() 
    MsgBox year_range_dict()("a"), "outside of function" 
End Sub 

、私はその後、「CCC」とのメッセージボックスが表示され、エラーメッセージ

答えて

0

出来上がり:

追加パラメータ"outside of function"を指定していたという問題がありました。あなたが何をしようとしているのかは分かりませんが、year_range_dict()("a")はキーの辞書"a"の値を返します。


「機能の外」のアイデアは、それはそれは、このようにする必要があり、MsgBoxのタイトルでなければならないことだった場合:MsgBox year_range_dict()("a"), Title:="outside of function"

押しはCtrl +私はメッセージボックスのパラメータを参照するには:

enter image description here

2

私は、このようなidiotismごめんなさい:セット:私はただ一つのことを忘れてしまいました。これは作業コードです:

Option Explicit 
Function year_range_dict() As Object 
    Dim d 
    Set d = CreateObject("Scripting.Dictionary") 
    d.Add "a", "aaa" 
    d.Add "b", "bbb" 
    d.Add "c", "ccc" 
    If d.Exists("c") Then 
     MsgBox d("c") 
     End If 
    Set year_range_dict = d 
End Function 
Sub DefaultRates() 
    Dim d 
    Set d=year_range_dict() 
    MsgBox d("a") 
End Sub 
関連する問題