Verschachteln eigener Klassen (VBA)

Hallo,

ich habe eine eigene Klasse, die eine Unterklasse definiert. Wenn ich nun aus der Unterklasse auf Eigenschaften der übergeordneten Klasse zugreifen möchte, dann mosert VBA (Variable nicht definiert). Erkannt (weil identische Schreibweise wie bei der Deklaration in der Mutterklasse) wird die Variable aber.

Wie kann ich aus der Tochterklasse auf Eigenschaften/Methoden der Mutterklasse zugreifen?

Danke schon mal
Martin

Jetzt habe ich mir so beholfen dass ich aus meinem Hauptprogramm die Eigenschaft aus der Mutterklasse abfrage und sie der Funktion der Tochterklasse übergebe.

i = TKl.FunktionA(MKl.EigenschaftB)

Das kann’s aber doch nicht sein, oder?

Martin

Jetzt habe ich mir so beholfen dass ich aus meinem
Hauptprogramm die Eigenschaft aus der Mutterklasse abfrage und
sie der Funktion der Tochterklasse übergebe.
i = TKl.FunktionA(MKl.EigenschaftB)
Das kann’s aber doch nicht sein, oder?

Hallo Martin,

zeige bitte den restlichen Code.

Gruß
Reinhard

In Modul 1:

Option Explicit

Sub x()

Dim oMKlasse As clsMKl

Set oMKlasse = New clsMKl
oMKlasse.oTKlasse.Versuch
End Sub

Im Klassenmodul „clsMKl“:

Option Explicit
Private cString As String
Public oTKlasse As clsTKl

Private Sub Class_Initialize()

Set oTKlasse = New clsTKl

cString = „abcd“
End Sub

’ —/Get
Public Property Get Parameter() As String

Parameter = cString
End Property

Im Klassenmodul „clsTKl“

Option Explicit
Private cTString As String

Sub VerSuch()

Cells(1, 1) = Parameter
End Sub

Und? Wat sachste nu?

Martin

Link
Jetzt habe ich evtl. einen Link zur Lösung meines Problems gefunden:

http://msdn.microsoft.com/en-us/library/office/aa141…

Ich verstehe aber nicht wie ich das programmieren muss. :frowning:

Martin

Hallo martin,

Und? Wat sachste nu?

wenig bis nix. Wie auch, bin stolz daß ich für mich so 2-3 Mutter-Klassen gebastelt habe und die funktionieren. Da jetzt Unterklassen zu bilden und denen Eigenschaften zu vererben habe ich noch nie probiert.

In deinen Code fiel mir auf daß es mal cString, mal c T String heißt.

Hier hat Peter einen Einstieg in Klassen geschrieben, kennste den Link schon:
http://www.online-excel.de/excel/grusel_vba.php?f=7

Zu deinem Link, so wie ich den deute geht es da um die zwei Dinge die man mit Klassen machen kann/muß, Initialize und Terminate. Bzw. mehr um letzteres und den Folgen wenn man kein Terminate durchführt.
Ist kein Wissen, ist meine Deutung :smile:

Gruß
Reinhard

Habe es inzwischen gefunden:

http://books.google.de/books?id=46toCUvklIQC&pg=PA31…


In Modul1:
Option Explicit

Sub Hauptprogramm()
Dim oMKlasse As clsMKl

Set oMKlasse = New clsMKl

oMKlasse.oTKlasse.Versuch
End Sub


In der Mutterklasse:

Option Explicit

Private cString As String
Public oTKlasse As clsTKl

Private Sub Class_Initialize()

Set oTKlasse = New clsTKl
Set oTKlasse.Parent = Me

cString = „abcd“

End Sub

’ —/Get
Public Property Get Parameter() As String
Parameter = cString
End Property


In der Tochterklasse:

Option Explicit
Private cTString As String
Private cParent As clsMKl

Sub Versuch()
Cells(1, 1) = Me.Parent.Parameter
End Sub

Public Property Set Parent(objParent As clsMKl)
If cParent Is Nothing Then
Set cParent = objParent
End If
End Property

Public Property Get Parent() As clsMKl
Set Parent = cParent
End Property

Vielleicht wäre das ja was für die Bibliothek?

Viele Grüße und eine schöne Woche
Martin

Hallo Martin,

Vielleicht wäre das ja was für die Bibliothek?

du meinst als eigene Q in die FAQ dieses Brettes? Wird sich sehr einsam fühlen da es da keine anderen Qs zu Klassen gibt. Gelesen wird sie auch nahezu nie, wäre Perlen vor die … geworfen :frowning: Sehr leider aber so ist hier in w-w-w die Realität.

Ich hingegen freue mich daß du uns deine Lösung zeigst :smile: Itzo habe ich keinerlei Idee für was das sinnvoll ist/wäre, aber wer weiß, evtl. benötige ich es mal.

Viele Grüße und eine schöne Woche

dito für dich.

Gruß
Reinhard

Du hast doch geschrieben dass du auch ein PRG mit Klassen hast. Wofür verwendest du das?

Ich schreibe an einem PRG/Klasse das unterschiedliche Typen von Datendateien einliest und decodiert. Die Mutterklasse stellt allgemeine Eigenschaften und Funktionen zur Verfügung (Dateigröße, Dateiinhalt etc.), die Subklassen sind auf die verschiedenen Dateitypen zugeschnitten.

Immer wieder schreibe ich an PRGs um den Aufbau dieser oder jener Datei auszulesen. Jedes Mal wieder von vorne, jedes Mal muss ich mich wieder mit den Basics rumärgern. Nun nie wieder (hoffentlich :wink: ).

Martin