Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Arrays in Klassen
zurück: Gibt es unterschiedlichen Klassen weiter: Klassen in Klassen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Isabelle :-)
Menschin


Verfasst am:
26. Aug 2012, 11:20
Rufname:
Wohnort: Westlicher Spiralarm der Galaxis

Arrays in Klassen - Arrays in Klassen

Nach oben
       Version: Office 2k (2000)

Hallöchen,

da die Frage gerade im Raum stand, hier zwei Beispiele wie du 1. In Klassen dynamische Arrays verwalten kannst. Und 2. Wie du Arrays an Klassen übergeben kannst.

1. Arrayverwaltung in Klassen

In einem Standardmodul:

Code:
Option Explicit

Private lobjDivide As clsDivide1

Public Sub Test1()

    Set lobjDivide = New clsDivide1

    With lobjDivide

        .Dividend(0) = 12
        .Divisor(0) = 4
        Call .Divide(0)
        MsgBox .Result(0)

        .Dividend(1) = 25
        .Divisor(1) = 5
        Call .Divide(1)
        MsgBox .Result(1)

    End With

    Set lobjDivide = Nothing

End Sub

In einem Klassenmodul mit dem Namen "clsDivide1":

Code:
Option Explicit

Private madblDivisor() As Double
Private madblDividend() As Double
Private madblResult() As Double

Private Sub Class_Initialize()
    ReDim madblDivisor(0)
    ReDim madblDividend(0)
    ReDim madblResult(0)
End Sub

Private Sub Class_Terminate()
    Erase madblDivisor
    Erase madblDividend
    Erase madblResult
End Sub

Friend Property Let Divisor(ByVal pvialngIndex As Long, ByVal pvdblDivisor As Double)
    If UBound(madblDivisor) < pvialngIndex Then ReDim Preserve madblDivisor(pvialngIndex)
    madblDivisor(pvialngIndex) = pvdblDivisor
End Property

Friend Property Get Divisor(ByVal pvialngIndex As Long) As Double
    If UBound(madblDivisor) < pvialngIndex Then ReDim Preserve madblDivisor(pvialngIndex)
    Divisor = madblDivisor(pvialngIndex)
End Property

Friend Property Let Dividend(ByVal pvialngIndex As Long, ByVal pvdblDividend As Double)
    If UBound(madblDividend) < pvialngIndex Then ReDim Preserve madblDividend(pvialngIndex)
    madblDividend(pvialngIndex) = pvdblDividend
End Property

Friend Property Get Dividend(ByVal pvialngIndex As Long) As Double
    If UBound(madblDividend) < pvialngIndex Then ReDim Preserve madblDividend(pvialngIndex)
    Dividend = madblDividend(pvialngIndex)
End Property

Friend Property Let Result(ByVal pvialngIndex As Long, ByVal pvdblResult As Double)
    If UBound(madblResult) < pvialngIndex Then ReDim Preserve madblResult(pvialngIndex)
    madblResult(pvialngIndex) = pvdblResult
End Property

Friend Property Get Result(ByVal pvialngIndex As Long) As Double
    If UBound(madblResult) < pvialngIndex Then ReDim Preserve madblResult(pvialngIndex)
    Result = madblResult(pvialngIndex)
End Property

Friend Sub Divide(ByVal pvialngIndex As Long)
    On Error Resume Next
    Result(pvialngIndex) = Dividend(pvialngIndex) / Divisor(pvialngIndex)
End Sub


2. Arrayübergabe an Klassen

In einem Standardmodul:

Code:
Option Explicit

Private lobjDivide As clsDivide2

Public Sub Test2()

    Dim adblDivisor() As Double
    Dim adblDividend() As Double
    Dim adblResult() As Double

    ReDim adblDivisor(9)
    ReDim adblDividend(9)
    ReDim adblResult(9)

    Dim ialngIndex As Long

    For ialngIndex = 0 To 9
        adblDividend(ialngIndex) = (ialngIndex + 1) * Int(Rnd * 10)
        adblDivisor(ialngIndex) = (ialngIndex + 1) * Int(Rnd * 5)
    Next

    Set lobjDivide = New clsDivide2

    With lobjDivide

        .Dividend = adblDividend
        .Divisor = adblDivisor
        .Result = adblResult

        Call .Divide(0)
        adblResult = .Result
        MsgBox adblResult(0)

        Call .Divide(1)
        adblResult = .Result
        MsgBox adblResult(1)

    End With

    Set lobjDivide = Nothing

End Sub

In einem Klassenmodul mit dem Namen "clsDivide2":

Code:
Option Explicit

Private madblDivisor() As Double
Private madblDividend() As Double
Private madblResult() As Double

Private Sub Class_Terminate()
    Erase madblDivisor
    Erase madblDividend
    Erase madblResult
End Sub

Friend Property Let Divisor(ByRef pradblArray() As Double)
    madblDivisor = pradblArray
End Property

Friend Property Get Divisor() As Double()
    Divisor = madblDivisor
End Property

Friend Property Let Dividend(ByRef pradblArray() As Double)
    madblDividend = pradblArray
End Property

Friend Property Get Dividend() As Double()
    Dividend = madblDividend
End Property

Friend Property Let Result(ByRef pradblArray() As Double)
    madblResult = pradblArray
End Property

Friend Property Get Result() As Double()
    Result = madblResult
End Property

Friend Sub Divide(ByVal pvialngIndex As Long)

    Dim adblDivisor() As Double
    Dim adblDividend() As Double
    Dim adblResult() As Double

    adblDivisor = Divisor
    adblDividend = Dividend
    adblResult = Result

    On Error Resume Next
    adblResult(pvialngIndex) = adblDividend(pvialngIndex) / adblDivisor(pvialngIndex)
    On Error GoTo 0

    Result = adblResult

End Sub

Beachte beim 2. Beispiel, dass 1. Die Arrays welche übergeben werden sollen dynamisch sein müssen. Also erst mit Dim ein undimensioniertes Array anlegen und dann mit Redim die Dimensionen festlegen. Und dass 2. Die Übergabe des Arrays als Referenz (ByRef) erfolgen muss.

Die Beispiele sind natürlich relativ sinnlos, sie sollen nur das Prinzip verdeutlichen.

_________________
LG Isi

Die Mitgliedschaft im Forum erhöht deine Chance auf eine Antwort von mir um 99,999%
maninweb
Microsoft Excel MVP 2014


Verfasst am:
26. Aug 2012, 11:35
Rufname: maninweb
Wohnort: Aachen


AW: Arrays in Klassen - AW: Arrays in Klassen

Nach oben
       Version: Office 2k (2000)

Hallo zusammen...

nur zum Herausnehmen aus den Unbeantworteten Beiträgen.

Gruß Smile

_________________
Der größte Aberglaube der Gegenwart ist der Glaube an die Vorfahrt.
Jacques Tatischeff - auch bekannt als Jacques Tati
20FCC4FD0E3240C59522E3F0C4695941
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Arrays? - Erweitern? 3 Exceler1 494 25. Aug 2011, 16:26
Gast Arrays? - Erweitern?
Keine neuen Beiträge Excel Formeln: Häufigkeit in Klassen/Gruppen mit verschiedener Anzahl 4 Baileysss 922 11. Mai 2011, 20:10
Baileysss Häufigkeit in Klassen/Gruppen mit verschiedener Anzahl
Keine neuen Beiträge Excel Formeln: Klassen dem Geburtsjahr zuteilen 7 ollimen 281 31. Dez 2010, 00:23
Gast Klassen dem Geburtsjahr zuteilen
Keine neuen Beiträge Excel Formeln: SUMMENPRODUKT mit mehreren arrays... 2 Gast 492 29. Apr 2010, 17:56
MariaL SUMMENPRODUKT mit mehreren arrays...
Keine neuen Beiträge Excel VBA (Makros): Diagrammdaten aus Arrays lesen 3 schneih2 1102 03. Feb 2009, 15:40
bst Diagrammdaten aus Arrays lesen
Keine neuen Beiträge Excel VBA (Makros): Verschiedenen Objekten Klassen zuweisen 2 _Christoph_ 1220 20. Dez 2008, 23:03
_Christoph_ Verschiedenen Objekten Klassen zuweisen
Keine neuen Beiträge Excel VBA (Makros): Probleme mit Dimensionen von Arrays 3 ExcelTüftler 383 11. Nov 2008, 10:53
ExcelTüftler Probleme mit Dimensionen von Arrays
Keine neuen Beiträge Excel VBA (Makros): Arrays initialisieren & deklarieren in einem Schritt 10 Vandroy 36071 20. Okt 2008, 09:23
Vandroy Arrays initialisieren & deklarieren in einem Schritt
Keine neuen Beiträge Excel VBA (Makros): checkBox mit Klassen zur Leufzeit erstellen 14 TypMens 692 04. Aug 2008, 14:43
bst checkBox mit Klassen zur Leufzeit erstellen
Keine neuen Beiträge Excel VBA (Makros): Arrays zählen 3 Michael XYZ 402 23. Apr 2008, 10:14
Sensewell Arrays zählen
Keine neuen Beiträge Excel VBA (Makros): Arrays automatisch bennen 6 PeterB_25 586 22. Okt 2007, 12:01
Gast Arrays automatisch bennen
Keine neuen Beiträge Excel VBA (Makros): Wie arbeitet man in Klassen mit Array's 1 Bamberg 403 16. Sep 2007, 20:58
Bamberg Wie arbeitet man in Klassen mit Array's
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML Editor Forum