1

クラス foo を持つルーチンです。クラス foo にはクラス bar が含まれていますが、初期化はしていません。私のルーチンでは、親メソッドの foo のクラス bar をオブジェクトとして渡します。次に、受信メソッドは foo のバーを新しいバーとして初期化します。

後でfooを参照すると、何らかの理由でbarが初期化されていません。別のメソッド内で foo のバーを初期化する方法はありますか?

<Class Foo>
Option Explicit

Public mybar As Bar

<Class Bar>
Option Explicit

Public theText As String

<Main Module>
Public Sub Test()
  Dim myfoo As New foo
  Dim abar As Bar


  Derp myfoo.mybar


  myfoo.mybar.theText = "Test"
End Sub

Public Sub Derp(ByRef mybar As Bar)
  Set mybar = New Bar

End Sub

コードで myfoo.mybar.thetext = "Test" が検出されると、エラー 91 (オブジェクト変数または With ブロック変数が設定されていません) が表示されます。

ベンダー固有のシステムである VBA バージョン 6.5.1054 を通じて VBA を使用しています。

4

1 に答える 1