人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBAにて、Collectionにクラスのインスタンスを入れ、これをインスタンスとして取り出す際にエラーになります。
VBAにて、Collectionにクラス(ユーザ定義オブジェクト)のインスタンスをaddして入れて、インスタンスとして取り出す際にエラーになります。
メソッドチェーンで、インスタンスを取り出さないでインスタンス内部にアクセスする場合はエラーとなりませんが、インスタンスを取り出すとエラーになります。
VBAでコレクションでクラスを扱う方法をご教示いただきたいです・・・。
(Dictionaryだとインスタンス入れられない。)

試してみたコードは追加で貼ります。

●質問者: 匿名質問者
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

サンプルコード

クラスモジュール

```sampleClass
Public name As String

Public Sub Class_Initialize()
End Sub
```

メインモジュール

```main
Sub testCollection()
Dim i As Integer
Dim sampleClasses As New Collection


Dim sampleClassInstance As sampleClass
Set sampleClassInstance = New sampleClass
sampleClassInstance.name = "hogehoge"
sampleClasses.Add sampleClassInstance, "こんにちは"

Set sampleClassInstance = New sampleClass
sampleClassInstance.name = "fugafuga"
sampleClasses.Add sampleClassInstance, "さようなら"

sampleClasses.Add 5, "おはよう"

'' パターン1
'Dim sampleClassInstances As Variant
'sampleClassInstances = sampleClasses.item("こんにちは") ' エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません
'MsgBox sampleClassInstances.name

'' パターン2
'Dim sampleClassInstances As sampleClass
'Set sampleClassInstances = New sampleClass
'sampleClassInstances = sampleClasses.item("こんにちは") ' エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません
'MsgBox sampleClassInstances.name

'' パターン3
'Dim sampleClassInstances As sampleClass
'sampleClassInstances = sampleClasses.item("こんにちは") ' エラー 91 オブジェクト変数またはwithブロック変数が設定されていません
'MsgBox sampleClassInstances.name

'' パターン4
'Dim sampleClassInstances As sampleClass
'Set sampleClassInstances = sampleClass ' エラー 424 オブジェクトが必要です
'sampleClassInstances = sampleClasses.item("こんにちは")
'MsgBox sampleClassInstances.name

'' パターン5
MsgBox sampleClasses.item("こんにちは").name ' エラーは出ない

'' パターン6
Dim res As Integer
res = sampleClasses.item("おはよう") ' エラーは出ない
MsgBox res

End Sub
```


1 ● 匿名回答1号

パターン1?3については
「Set」を使って
sampleClassInstances = sampleClasses.item("こんにちは")

Set sampleClassInstances = sampleClasses.Item("こんにちは")
とすればいいと思います。

パターン4は
インスタンスではなくクラス名をオブジェクト変数に入れようとしているためエラーになっています。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ