Mein Ziel:
Eine Variable eines Klassenmoduls soll erst dann berechnet werden, wenn sie verlangt wird. Denn die Berechnung dauert lange und die Variable wird nicht immer gebraucht.
Das habe ich mit folgendem Code gemacht:
'Makro
Sub Berechnung()
Dim a As New clsTest
Dim b
b = a.Masse
End Sub
'Klassenmodul clsTest
Option Explicit
Dim m_Abmessungen
Property Get Masse()
Debug.Print TypeName(m_Abmessungen)
If Not IsArray(m_Abmessungen) Then Berechne_m_Abmessungen
Masse = WorksheetFunction.Product(m_Abmessungen)
End Property
Sub Berechne_m_Abmessungen()
m_Abmessungen = Array(3, 5, Time * 24 * 3600)
End Sub
Doch funktioniert das auch wirklich so?
Die Zeile "Debug.Print TypeName(m_Abmessungen)" liefert erwartungsgemäß "Empty".
Wenn ich aber vor dieser Stelle beim schrittweise Durchlauf im Lokalfenster Me öffne, dann liefert es "Variant()", denn m_Abmessungen ist bereits ausgerechent.
Werden etwa die Properties intern immer berechnet, als bei jedem Schritt auf Stand gehalten?
Falls ja, wie kann ich dann mein oben beschriebenes Ziel erreichen?
Falls nein, wie kann ich überprüfen, dass mein oben beschriebenes Ziel erreicht ist?
LG,
Florian