私はこの単純な Address クラスを持っています。
Public street as String
Public number as Integer
次に、モジュール calle "mdl1" 内にインスタンスを作成し、それを同じモジュール関数で使用しています。
Public objectAddress as Address
Public Function f1() As String
Set objectAddress = New Address
objectAddress = "5th street" 'this works fine
If Not isNothing() Then
f1 = objectAddress.street
Else
f1 = vbNullString
End If
End Function
Public Function isNothing() As Boolean
'When entering here, the objectAddres is ALWAYS Nothing, even though i just assigned a value to the street property...
If objectAddress is Nothing then
isNothing = True
Else
isNothing = False
End If
End Function
関数の objectAddress.street に値を代入しましたf1()
が、それが ìsNothing()` 関数に入ると、objectAddress は再び Nothing になります。
そして、コントロールがf1
関数に戻ると、オブジェクトは値を持つように戻り、ストリート プロパティにはまだ割り当てられた値があります...
では、モジュールの「プロパティ」はクラスのもののように振る舞うべきではありませんか? または、モジュール内にグローバル/ローカル スコープが存在しませんか?
解決済み:
誰も質問の要点を理解していませんでしたが、問題は、グローバルオブジェクトと同じ名前のローカルオブジェクトを作成していたことでした。そのため、常にNothing
別の関数に入ったときでした。