3

それ自体のコレクションを含むクラスがあります。(最上位クラスには、コレクション内の詳細なインスタンスの要約バージョンが含まれています。)

現在、コレクションはパブリック変数です。これは、プライベート変数の操作の詳細をまだすべて把握していないためです。後で修正できます。

コレクションにアイテムを追加するにはどうすればよいですか? オブジェクト変数が見つからないため、エラー 91 が発生します。

以前のすべての助けに感謝します。クラスをより広範囲に使用するためにコードを再構築してきました。

クラスcPE

Public PE_Details As Collection ' collection of cPE
Public PE_ID as integer
Public PE_ID_Index as integer

' Add to the detailed list of PE's
Public Function AddPEDetail(ByRef cPE_Detail As cPE)

    PE_Details.Add cPE_Detail    ' ERROR: Object variable or With 
                                 ' block variable not set

End Function

これを呼び出すモジュール コードは次のとおりです。

Dim clsPE As cPE                ' Summary version of PE
Dim clsPE_Detail As cPE         ' A detailed PE
Dim i as Integer

Set clsPE = New cPE     ' This is the PE which will also contain a list of detailed PEs

' Add three instances of detailed cPE to the summary cPE object
for i = 1 to 3
   Set clsPE_Detail = New cPE

   clsPE_Detail.PE_ID = clsPE.PE_ID
   clsPE_Detail.PE_ID_Index = clsPE.PE_ID_Index
   'etc.

   clsPE.AddPEDetail clsPE_Detail  ' see above
next i
4

1 に答える 1

9

cPE クラスに Class_Initialize メソッドを追加し、変数を初期化します。あなたが今持っているように、PE_Detailsを設定したことはないので、null/nothingです

Private Sub Class_Initialize()
 set PE_Details = New Collection 
End Sub
于 2013-08-23T21:13:19.000 に答える