Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1132to1136
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ParamArray macht mir Kummer

ParamArray macht mir Kummer
Mathias
Hallo Leute,
ich habe ein Problem bezüglich des ParamArray.
Ich möchte in ein ParamArray bestimmt Objekte (Controls) und für diese Objekte Werte übergeben lassen. Bereits in Erfahrung bringen konnte ich für mich, dass wie bei jedem Array, ein Element immer mit einer Indexnummer (Feldindex) abgelegt wird.
Unter diesen Umständen habe ich mir nun folgende Schritte gedacht:
1. Feldindex des ParamArray-Elementes, das ein Objekt ist, bestimmen
2. Alle nachfolgenden Param-Array-Elemente, die selbst kein Objekt sind, dem Objekt aus 1. als Wert zuweisen
3. Wenn in der Folge der ParamArray-Elemente wieder auf ein Objekt gestoßen wird, dann wieder mit 1. beginnen
4. Ausstieg, wenn Ende der ParamArray-Elemente erreicht.
Mein Hauptproblem ist vorallem, dass ich nicht weiß, wie ich den Feldindex eines einzelnen ParamArray-Elementes auslesen kann. Hat jemand von euch eine Ahnung?
ich möchte, wenn ich den Feldindex weiß, einfach alle nachfolgenden als Wert zuweisen. Vielleicht noch als Anmerkung: Ich weiß, dass ich z.B. einem Objekt immer 4 Werte zuweisen will. Ich weiß aber im Vorfeld nicht wieviele Objekt insgesamt ich anpacken muss.
Gruß
Mathias

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: ParamArray macht mir Kummer
25.01.2010 17:20:11
Tino
Hallo,
"Mein Hauptproblem ist vorallem, dass ich nicht weiß, wie ich den Feldindex eines einzelnen ParamArray-Elementes auslesen kann. Hat jemand von euch eine Ahnung?"
Der Index geht in der Regel von 0 bis n also LBound(Array) to Ubound(Array) und auch so
kannst Du diese in einer For Next Schleife Durchlaufen.
for i LBound(Array) to Ubound(Array)
Array(i)....
next i
Gruß Tino
AW: ParamArray macht mir Kummer
25.01.2010 17:25:17
Josef
Hallo Matthias,
und wie willst du der Prozedur mitteilen, welcher Eigenschaft des Objektes du einen Wert zuweisen möchtest?
Gruß Sepp

Anzeige
AW: ParamArray macht mir Kummer
25.01.2010 19:31:53
Nepumuk
Ja genau,
warum also nicht einfach ein Array aus einem benutzerdefinierten Datentyp mit Objekt, Eigenschaft(en) [auch wieder ein Array] und Wert(en) [auch wieder ein Array]? Oder Eigenschaften und Werte als Array eines benutzerdefinierter Datentyps im Array des Objektdatentyps? Damit wärst du auch noch unabhängig von der Anzahl der Eignschaften. Eigenschaften kannst du per CallByName dann schreiben.
Gruß
Nepumuk
AW: ParamArray macht mir Kummer
25.01.2010 20:37:28
Mathias
Hallo Ihr Zwei,
ich habe mir den Ablauf so gedacht, da ich auf keine andere Lösung mangelns Wissen gekommen bin. Ich hatte daran gedacht, dass ich bereits bei der Parametereingabe darauf achten muss, wie ich das eingebe. Wenn ich dort eine gewisse Reihenfolge einhalte, kann ich das gut mit einer Schleife lösen.
Aber, Nepumuk...dein Vorschlag klingt noch interessanter. Allerdings habe ich keine Ahnung, wie ich sowas (recht einfach) basteln kann. Kannst du mir da einmal einen Denkanstoß geben?
Gruß
Mathias
Anzeige
AW: ParamArray macht mir Kummer
25.01.2010 22:06:13
Nepumuk
Hallo,
ein einfaches Beispiel:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Type XY_Property
    strProperty As String
    vntValue As Variant
End Type

Private Type XY_Object
    objObject As Object
    udtProperties() As XY_Property
End Type

Public Sub Beispiel_1()
    Dim udtObject() As XY_Object
    Dim lngAnzahlObjekte As Long, lngAnzahlEigenschaften As Long
    
    For lngAnzahlObjekte = 1 To Anzahl_Objekte '?
        
        Redim Preserve udtObject(1 To lngAnzahlObjekte)
        
        With udtObject(lngAnzahlObjekte)
            
            Set .objObject = DeinObjekt
            
            'Anzahl der Eigenschaften ermitteln oder auch hier eine Schleife ?
            
            Redim .udtProperties(1 To lngAnzahlEigenschaften)
            
            With .udtProperties(1)
                .strProperty = "Eigenschaft1"
                .vntValue = Wert_Eigenschaft1
            End With
            
            With .udtProperties(2)
                .strProperty = "Eigenschaft3"
                .vntValue = Wert_Eigenschaft2
            End With
            
            With .udtProperties(3)
                .strProperty = "Eigenschaft3"
                .vntValue = Wert_Eigenschaft3
            End With
        End With
    Next
    
    Call Beispiel_2(udtObject())
    
End Sub

Public Sub Beispiel_2(udtObject() As XY_Object)
    Dim lngObjectIndex As Long, lngPropertyIndex As Long
    For lngObjectIndex = LBound(udtObject) To UBound(udtObject)
        With udtObject(lngObjectIndex)
            For lngPropertyIndex = LBound(.udtProperties) To UBound(.udtProperties)
                CallByName .objObject, .udtProperties(lngPropertyIndex).strProperty, _
                    VbLet, .udtProperties(lngPropertyIndex).vntValue
            Next
        End With
    Next
End Sub

Da ich keine Ahnung habe, was das für Objekte und Eigenschaften sind, hab ich es mal allgemein gehalten. Die verwendeten Namen sind natürlich nicht zwingend, ich würde da schon genauere Bezeichnungen verwenden.
Gruß
Nepumuk
Anzeige
AW: ParamArray macht mir Kummer
26.01.2010 08:29:10
Mathias
Hallo Nepumuk,
danke für die Hilfe. Das passt zwar nicht zu 100% in mein Vorhaben, eröffnet aber eine andere Perspektive.
Gruß
Mathias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige