[VBA] Klasse mit Property Function vom Datentyp Klasse

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von bla.

    [VBA] Klasse mit Property Function vom Datentyp Klasse

    Hallo,

    Ich verzweifle etwas an VBA.
    Mein Anliegen:
    Ich habe eine Klasse clsProfil. Diese soll eine Property Get Function Querschnittswerte bekommen.
    Querschnittswerte soll einen benutzerdefinierten Datentyp haben.

    Meine erste Idee:
    Querschnittswerte als benutzerdefinierten Typen in ein Modul schreiben:

    Visual Basic-Quellcode

    1. Public Type tQuerschnittswerte
    2. h as double
    3. b as double
    4. end type


    und in clsProfil:

    Visual Basic-Quellcode

    1. Private m_Querschnittswerte As tQuerschnittswerte
    2. Public Property Get Querschnittswerte() As tQuerschnittswerte
    3. Querschnittswerte = m_Querschnittswerte
    4. End Property
    5. Public Sub Set_Querschnittswerte()
    6. m_Querschnittswerte.h =1
    7. m_Querschnittswerte.b =2
    8. end Sub


    Problem: Man kann anscheinend keine öffentlichen benutzerdefinierten Typen einer öffentlichen Property Function zuordnen.

    Meine zweite Idee:

    Anstatt eines benutzerdefinierten Typs eine Klasse verwenden:

    clsQuerschnittswerte mit Property Get und Let Functions für z.B. h und b

    und dann in clsProfil eingefügt:

    Visual Basic-Quellcode

    1. Private m_Querschnittswerte As New clsQuerschnittswerte
    2. Public Property Get Querschnittswerte() As clsQuerschnittswerte
    3. Querschnittswerte = m_Querschnittswerte
    4. End Property
    5. Public Sub Set_Querschnittswerte()
    6. m_Querschnittswerte.h =1
    7. m_Querschnittswerte.b =2
    8. end Sub


    wenn ich jetzt jedoch versuche darauf zuzugreifen klappt das wieder nicht.

    Visual Basic-Quellcode

    1. Dim objProfil as new clsProfil
    2. MsgBox objProfil.Querschnittswerte.h


    Fehlermeldung "<Objektvariable oder With-Blockvariable nicht festgelegt>"
    Wenn ich objProfil überwache, sehe ich, dass m_Querschnittswerte korrekt gefüllt ist. Nur komme ich nicht an die Werte dran :(
    Habe ich da einen generellen Denkfehler? VBA ist mir noch recht neu.

    Gruß,
    bla
    Für ein Mindestmaß an Rechtschreibung, Interpunktion und Majuskeln!
    Also für Variante 2 musst du im GET ein SET verwenden.
    In VBA musst du für alle Objekte immer SET verwenden, wenn du eine Referenz setzt:

    Visual Basic-Quellcode

    1. Public Property Get Querschnittswerte() As clsQuerschnittswerte
    2. set Querschnittswerte = m_Querschnittswerte
    3. End Property


    Variante 1 schau ich mir mal kurz an.

    //Edit:
    Variante 1 sollte eigentlich so funktionieren. Was ist das Problem ?
    Das ist meine Signatur und sie wird wunderbar sein!