CreateObjectでセットしたオブジェクトの戻り値は取得できるか

このQ&Aのポイント
  • CreateObject("Scripting.Dictionary")でセットしたオブジェクトは関数の戻り値として取得できますか?現在のエラー状況はMicrosoft VBScript 実行時エラー (0x800A01C2)で、引数の数が一致していないか不正なプロパティを指定している可能性があります。
  • セットしたオブジェクトを引数渡しはできるのに戻り値として取得できない理由は、知識不足ですが不思議です。
  • 質問としては、CreateObjectでセットしたオブジェクトを関数の戻り値として取得する方法についての解決策を教えていただきたいです。
回答を見る
  • ベストアンサー

Dictionaryについてその2

CreateObject("Scripting.Dictionary")でセットしたオブジェクトは関数の戻り値として取得できますか? 例) --------------------------------------------- Dim RetObj Dim RecValue RetObj = CreateRec() RecValue = RetObj.Item("1") Response.Write(recValue) Private Function CreateRec() Dim RecSet Set RecSet = CreateObject("Scripting.Dictionary") RecSet.Add "1","山田" CreateRec = RecSet Exit Function End Function ------------------------------------------------- 現在のエラー状況 ●エラー タイプ Microsoft VBScript 実行時エラー (0x800A01C2) 引数の数が一致していません。または不正なプロパティを指定しています。 (余談)セットしたオブジェクトを引数渡しは出来るのに戻り値としてとれないのは・・・知識不足ですが不思議です。。 ご教授をお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
  • o84
  • ベストアンサー率31% (128/407)
回答No.2

? RecordSetでも取れるはずですが? ソースがそれではよく判らないので断言は出来ませんが。 ただ、なんだったかなー。 一回別のモノに落とさないと関数の中・外の出入りが 出来なかったのがあったような。。。 はっきりエラーが出たソースを書いてもらえれば判るんですが。 ちなみに、sousi-niさんが質問に書いている関数↓ですが ------------------ Private Function CreateRec()   Dim RecSet   Set RecSet = CreateObject("Scripting.Dictionary")   RecSet.Add "1","山田"   CreateRec = RecSet   Exit Function End Function ------------------ こう書き直せます↓。この方がシャープ。 何やってるのか判りやすいし。 ------------------ Private Function CreateRec()   Set CreateRec = CreateObject("Scripting.Dictionary")   CreateRec.Add "1","山田" End Function ------------------

soushi_ni
質問者

お礼

ご教授ありがとうございます。別投稿でもご協力していただき大変感謝しております。私自身も調べておりますので、どうかよろしくお願いいたします。

その他の回答 (1)

  • o84
  • ベストアンサー率31% (128/407)
回答No.1

例) --------------------------------------------- Dim RetObj Dim RecValue RetObj = CreateRec() ↑ここのところを Set RetObj = CreateRec() とすれば取れます。

soushi_ni
質問者

補足

ご教授ありがとうございます。 Set G_RecMap = Server.CreateObject("ADODB.Recordset") 'レコードオープン G_RecMap.Open SQLPrm, G_Conn, 3, 3, 1 上記のようにレコードセットしたオブジェクトは返せますでしょうか?同じ要領で行うと上手く行かないのですが。。。お手数ですが、よろしくお願いします

関連するQ&A

  • 二次元のDictionary

    ASPは全くの初心者です。 今回、二次元のDictionaryを使って値を表示させたいのですが 行き詰ってしまいました。 以下のコードをどのように変換すれば良いですか? <%@ LANGUAGE = VBSCRIPT %> <% call dictionary_create() Sub dictionary_create() Dim objParent Dim objChild dim x Set objParent = CreateObject("Scripting.Dictionary") For x=0 to 9 Set objChild = CreateObject("Scripting.Dictionary") objChild.Add "kaigi", "会議名"&i objChild.Add "Id", "0"&i objParent.Add x, objChild Set objChild = Nothing Response.Write objParent.Item("ConfName") Next end sub %>

  • Dictionaryについて3

    簡単に作ったソースなのですが、 以下の構文でエラーが発生します。 Dictionaryで作成したオブジェクトの束を配列として 格納させ、更にその配列を復帰値として取得し、メインルーチンにて展開させようと思っています。 以下のソースで考えられることございますか? 色々調べているのですが、述べ2日ハマっています。 ---------------------------------------------- Dim AAA,BBB(),CCC Set CCC=TEST 'CCCオブジェクトを展開し、値を画面に表示させる ’(未着手) private function TEST() Set AAA = CreateObject("Scripting.Dictionary") AAA.Add "1","111" ReDim Preserve BBB(0) Set BBB(0) = AAA Set TEST=BBB ←エラー個所 Exit Function End Function --------------------------------------------- エラー タイプ Microsoft VBScript 実行時エラー (0x800A01A8) オブジェクトがありません。

  • VBAのdictionaryでAddの使い方

    VBAでつぎのコードを実行すると、a,A1.1の後、a,A2.2と表示します。 dicには、a,A2.2の設定をしていないのになぜこうなるのでしょうか? どなたか教えてください。 Sub sample() Dim dic As Object Dim subDic As Object Set dic = CreateObject("Scripting.Dictionary") Set subDic = CreateObject("Scripting.Dictionary") subDic.Add "A1", 1 dic.Add "a", subDic subDic.Add "A2", 2 '結果表示 Dim key1 As Variant Dim key2 As Variant For Each key1 In dic.keys For Each key2 In dic(key1).keys MsgBox key1 & "," & key2 & ". " & dic(key1)(key2) Next Next End Sub

  • Dictionaryの使用に先立って・・・

    いつもお世話になっています。 CreateObject("Scripting.Dictionary")を使用して、 DBから取得したレコードを格納したいのですが、VBのようにコレクションのプロパティを使用することは出来ないのでしょうか? ------------------------------------------------- 例) レコード取得一覧: Filds("ID"),Filds("NAME") 処理を行いたい構想: Dim AAA 'コレクション Dim gRst 'レコードセットオブジェクト Set AAA = CreateObject("Scripting.Dictionary") Do Until gRst.EOF   AAA.ID = gRst.Filds("ID")   AAA.NAME = gRst.Filds("NAME")   '次のレコード  gRst.MoveNext Loop ------------------------------------------------ 大変お手数ですが、ご教授をお願いいたします。

  • VBAの関数で引数渡しでエラー

    関数呼び出しでObject型を渡したいのですが「引数の型が一致していません」との エラーになってしまいます。 以下のプログラムをどのように修正すればよいのでしょうか? Sub Test() Dim obj As Object Set obj = CreateObject("Scripting.Dictionary")     :   Sample(obj) End Sub Function Sample(obj As Object) End Function

  • 2次元のdictionary

    こんにちは。 recordsetの結果をDictionaryにいれたいと思っています。 環境はWindows Vista、vbScriptで書いています。 set dc = createobject("scripting.dictionary") Set rs = Server.CreateObject("ADODB.Recordset") rs.open (sql文), con  for i = 0 to rs.recordcount -1 for j = 0 to rs.fields.count - 1 dc.add rs.fields(j).name, rs.fields(j).value next next ちょっとイメージっぽく書きましたが(このままではエラーでます)、要は複数のフィールドを持つ複数のレコードを入れられないかということです。 色々調べたりしてみたのですがわかりません。 できないのかな?と思いました。 もしできるなら書き方をご教授頂けたらと思います。 よろしくお願いします。

  • EXCEL「Dictionaryオブジェクト」宣言

    EXCEL VBAにて Dictionaryオブジェクトを利用しようと思い ネット検索して調べていると・・・ 1)Dim MyDic As Object Set MyDic=CreateObject("Scripting.Dictionary") 2) Dim MyDic As Scripting.Dictionary Set MyDic = New Scripting.Dictionary 3) Dim MyDic Set MyDic=CreateObject("Scripting.Dictionary") 4) Dim myDic As New Scripting.Dictionary 上記の4パターンが出てきました。 いずれも「連想配列」を使うものなのですが、 オブジェクト型、バリアント型、Newキーワードで宣言・・・ 4つの違いがイマイチ理解できません。 違いを教えてください。

  • 【VB6.0】DictionaryのAddが遅い

    VB6.0で次のようなコーディングをしています。 Dim FNmDic As Variant Dim HelpFile As File Set FNmDic = CreateObject("Scripting.Dictionary") FNmDic.Add Left(HelpFile.Name, 3), HelpFile.Path このFNmDic.Addに2秒もかかってしまいます。 HelpFileは、先頭3文字が数字のファイルを指しており、キーの役目をしています。 HelpFileがローカルにあるファイルをさしている場合は、遅くないのですが、 ほかの端末の共有フォルダにあるファイルを指すとAddが遅いです。 また、この現象はエンドユーザの環境で発生し、私の開発環境では発生していません。 Addを1秒以下にしたいのですが、何か解決の糸口はあるでしょうか?

  • Excelマクロ

    お世話になります。 Excelマクロについて、ざっくりとした質問なのですが、 以下のマクロを実行した時に、オブジェクトXXXには、 どのようなものを格納できるのでしょうか。 Dim XXX As Object Set XXX = CreateObject("Scripting.Dictionary") 「CreateObject」と「Scripting.Dictionary」の使い方を調べてはみたのですが、 それぞれの使い方が今ひとつ分かりません。 お力添えいただきたいと思います。 よろしくお願いいたします。 以上

  • DictionaryオブジェクトのItemの型は?

    このコードの○○○には何を書けばよいのでしょうか?  (下から2行目です) コードの間は適当に省略しています。 Sub test() Set Dic = CreateObject("Scripting.Dictionary") Items = Dic.Items   j = Func2(Items(k)) End Sub Function Func2(a As ○○○) End Function