VBScript:関数から返されたディクショナリオブジェクトを利用する方法は?
-
02-07-2019 - |
質問
関数から辞書を返そうとしています。この関数は正しく機能していると思いますが、返された辞書をどのように利用するかわかりません。
ここに私の機能の関連部分があります:
Function GetSomeStuff()
'
' Get a recordset...
'
Dim stuff
Set stuff = CreateObject("Scripting.Dictionary")
rs.MoveFirst
Do Until rs.EOF
stuff.Add rs.Fields("FieldA").Value, rs.Fields("FieldB").Value
rs.MoveNext
Loop
GetSomeStuff = stuff
End Function
この関数を呼び出して、返された辞書を使用するにはどうすればよいですか
編集:これを試しました:
Dim someStuff
someStuff = GetSomeStuff
and
Dim someStuff
Set someStuff = GetSomeStuff
someStuffにアクセスしようとすると、エラーが発生します:
Microsoft VBScript runtime error: Object required: 'GetSomeStuff'
編集2:関数でこれを試してください:
Set GetSomeStuff = stuff
このエラーの結果:
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
解決
あなたの問題が何であるか確信が持てなかったので、少し実験しました。
オブジェクトへの参照を割り当てるには、戻り値であっても set
を使用する必要があることを見逃したようです:
Function GetSomeStuff
Dim stuff
Set stuff = CreateObject("Scripting.Dictionary")
stuff.Add "A", "Anaconda"
stuff.Add "B", "Boa"
stuff.Add "C", "Cobra"
Set GetSomeStuff = stuff
End Function
Set d = GetSomeStuff
Wscript.Echo d.Item("A")
Wscript.Echo d.Exists("B")
items = d.Items
For i = 0 To UBound(items)
Wscript.Echo items(i)
Next
他のヒント
やってみましたか
GetSomeStuff = stuffを設定
関数の最後の行にありますか?
試してみました:
Dim returnedStuff
Set returnedStuff = GetSomeStuff()
その後、「For Each」辞書を繰り返し処理しますか?辞書の使用例があります(VB6の場合でも、その要点は同じです!)ここ。
所属していません StackOverflow