Excel VBAについて質問です。


Collectionを戻り値に取る
下記のようなFunctionを定義したのですが、

Public Function ReturnCollection() As Collection
  Dim col As New Collection
  col.Add ("hoge")
  ReturnCollection = col
End Function

このFunctionを呼ぼうとすると
「引数は省略できません」とエラーになってしまいます。

エラーになってしまう原因と対処方法を教えてください。

回答の条件
  • 1人2回まで
  • 登録:2007/12/04 11:00:21
  • 終了:2007/12/04 13:07:57

ベストアンサー

id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/12/04 12:39:01

ポイント30pt

オブジェクトの代入には Set が必要です。

今回の場合、下記のようにしたらうまくいかないでしょうか。

Sub main()
    Set cc = ReturnCollection()
End Sub

Public Function ReturnCollection() As Collection
    Dim col As New Collection
    col.Add ("hoge")
    Set ReturnCollection = col
End Function
id:kanouk

ありがとうございます。

戻り値の設定も通常の代入と同じようにするのですね。

2007/12/04 13:07:17

その他の回答(1件)

id:Dark1984B No.1

黒ひよこ回答回数17ベストアンサー獲得回数02007/12/04 12:31:16

ポイント40pt

Collectionはオブジェクトなので、

Functionの返し値代入の頭にSet付ければいくかと。

Letと違って省略不可です。

id:kanouk

ありがとうございます。

解決しました。

2007/12/04 13:06:19
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/12/04 12:39:01ここでベストアンサー

ポイント30pt

オブジェクトの代入には Set が必要です。

今回の場合、下記のようにしたらうまくいかないでしょうか。

Sub main()
    Set cc = ReturnCollection()
End Sub

Public Function ReturnCollection() As Collection
    Dim col As New Collection
    col.Add ("hoge")
    Set ReturnCollection = col
End Function
id:kanouk

ありがとうございます。

戻り値の設定も通常の代入と同じようにするのですね。

2007/12/04 13:07:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません