28.07.2019, 18:16
Servus Excel-Forumsmitglieder,
ich möchte die Instanzen einer benutzerdefinierten Klasse zählen,
und kriege es nicht hin.
Ich habe in der angehängten Beispieldatei eine Tabelle, die vier Kisten auflistet.
Jede Kiste hat eine Bezeichnung und ein Gewicht.
20190728_LB1972_Kistenerfassen.xlsm (Größe: 30,77 KB / Downloads: 1)
Mit dem Kopf "Kisten erfassen" möchte ich diese in einer definierten Klasse "cls_Kiste" erfassen,
und anschließend die Instanzen zählen und als Info ausgeben.
Definition von cls_Kiste (Klassenmodul):
Die Prozedur in dem "normalen" Modul "Arbeitsschritte" sieht wie folgt aus:
Mein (scheiternder) Plan sieht vor, ein Collection-Objekt "mobkAnzahl" zu definieren,
das in einer Funktion in cls_Kiste alle Instanzen einsammelt und anschließend mit mobkAnzahl.Count
das gewünschte Ergebnis bringt.
Allein, es funktioniert nicht und ich zweifle erheblich dran, ob mein Ansatz auch nur annähernd richtig ist.
Kann mir von euch jemand weiterhelfen?
Vielen Dank schon mal.
Gruß Ludwig
ich möchte die Instanzen einer benutzerdefinierten Klasse zählen,
und kriege es nicht hin.
Ich habe in der angehängten Beispieldatei eine Tabelle, die vier Kisten auflistet.
Jede Kiste hat eine Bezeichnung und ein Gewicht.
20190728_LB1972_Kistenerfassen.xlsm (Größe: 30,77 KB / Downloads: 1)
Mit dem Kopf "Kisten erfassen" möchte ich diese in einer definierten Klasse "cls_Kiste" erfassen,
und anschließend die Instanzen zählen und als Info ausgeben.
Definition von cls_Kiste (Klassenmodul):
Code:
Option Explicit
Private mstrBezeichnung As String
Private msngGewicht As Single
Private mKST1 As cls_Kiste
'---------------------------------------------------Bezeichnung-------------------------
Public Property Get Bezeichnung() As String
Bezeichnung = mstrBezeichnung
End Property
Public Property Let Bezeichnung(ByVal vNewValue As String)
mstrBezeichnung = vNewValue
End Property
'-------------------------------------------------Gewicht---------------------------
Public Property Get Gewicht() As Single
Gewicht = msngGewicht
End Property
Public Property Let Gewicht(ByVal vNewValue As Single)
msngGewicht = vNewValue
End Property
'-------------------------------------------------Collectionelemente zählen-------------------------------
Function Zaehlen() As Integer
For Each mKST1 In Me
mobkAnzahl.Add mKST1.Bezeichnung
Next
Zaehlen = mobkAnzahl.Count
End Function
Die Prozedur in dem "normalen" Modul "Arbeitsschritte" sieht wie folgt aus:
Code:
Option Explicit
Public myObjekt() As cls_Kiste
Public mobkAnzahl As New Collection
Sub Einsammeln()
Dim i As Integer, k As Integer
ReDim myObjekt(1 To Range("Tabelle").Rows.Count)
For i = 1 To Range("Tabelle").Rows.Count
Set myObjekt(i) = New cls_Kiste
myObjekt(i).Bezeichnung = Range("Tabelle").Cells(i, 1).Value
myObjekt(i).Gewicht = Range("Tabelle").Cells(i, 2).Value
Next i
MsgBox "Es wurden " & mobkAnzahl.Count & " Kisten erfasst." '"Hier sollte eine Info erfolgen, wie viele Kisten erfasst wurden."
End Sub
das in einer Funktion in cls_Kiste alle Instanzen einsammelt und anschließend mit mobkAnzahl.Count
das gewünschte Ergebnis bringt.
Allein, es funktioniert nicht und ich zweifle erheblich dran, ob mein Ansatz auch nur annähernd richtig ist.
Kann mir von euch jemand weiterhelfen?
Vielen Dank schon mal.
Gruß Ludwig