• 締切済み

ExcelVBA:パブリック オブジェクト モジュール…というエラーの対処法

こんにちは。 今回、WindowsXP SP2上のExcel2003 VBAを使ってツールを作成しているのですが、 以下のようなエラーが出て手が止まっています。 「コンパイル エラー:  パブリック オブジェクト モジュールで定義されたユーザ定義型に限り、変数に割り当てることができ、実行時バインディングの関数に渡すことができます。」 というものです。 具体的な環境としまして、 標準モジュールにDefineTypeというモジュールを作成し、 Public Type Record ID As Integer Name As String End Type を定義しています。 これをクラスモジュールに作成したCClassから以下のように参照しています。 Private Detail As New Collection 'of Record Private Sub Sub1()   Dim rec As Record   rec.ID = 3   rec.Name = "おなまえ"   Detail.Add rec   ~~~~~~~~~~~~~~ End Sub Public Sub CallSub1()   Call Sub1 End Sub そして、このクラスの中のPublicな関数であるCallSub1を フォームモジュールから呼び出しているのですが、 Sub1 の Detail.Add がだめなようです。 ・このエラーの意味 ・どこがどうだめなのか ・どうすれば解決できるか を、糸口でも構いませんのでご教授下さい。 よろしくお願いいたします。

みんなの回答

  • ape5
  • ベストアンサー率57% (85/148)
回答No.1

ユーザ定義型はFor Eachで使えないらしく、Collectionに追加できないらしいです。 そこで代替案として、ユーザ定義型ではなくクラスを使用すればうまくいくようです。

関連するQ&A