Variable Array Länge

Hallo Gemeinde,

habe nach langem Suchen keine lösung für mein problem gefunden.
ich möchte ein array variabler größe initialisieren, dessen größe erst zur laufzeit festgelegt wird. Das Array soll über eine Function befüllt werden, deren inhalt und vorallem größe das array ned kennt.

Die Function baut aus der aktuellen Zeile (row) auf dem Tabellenblatt (tableName) ein Array bestehend aus den in den Feldern der Zeile eingetragenen werten zusammen und gibt als rückgabewert eben dieses Array zurück. MaxCol ist die maximale Spaltenzahl der tabelle. der wert ist bisher public, würde ihn aber gerne später nur noch in der Function verwenden, d.h. ich hab den wert dann i, Sub Test() nicht zur verfügung.

Public Function DataSetArray(tableName, row) As Variant

Dim BuildDataSetArray (1 To maxCol)

For i = LBound(BuildDataSetArray) To UBound(BuildDataSetArray)
BuildDataSetArray(i) = Cells(row, i).value
Next

DataSetArray = BuildDataSetArray

End Function

Das Array, mit dem weiter als Objekt gearbeitet werden soll, wird folgendermaßen aufgerufen:

Sub Test()

Dim DataSet1() As Variant

DataSet1 = DataSetArray(tableName, row)
.
.
.
.
.


End Sub

Leider bekomme ich immer einen Fehler, weil ich die Größe des Arrays DataSet1 nicht festgelegt hab. Wenn es aber immer unterschiedlich viele werte sind die da rein sollen, wie leg ich dann die größe fest?
Kann ich in der Zeile:

DataSet1 = DataSetArray(tableName, row)

irgendwie auch die größe von DataSet1 abhängig von DataSetArray festlegen?

Danke euch vielmals im Voraus!!!

Greetz

Mole

Hallo,

Danke für die schnelle Antwort.

Dim, ReDim etc kannte ich schon. (siehe oben die initialisierung von DataSet1)

passiert mir jetzt zum zweiten mal in 2 Tagen, dass ich mein prob selbst löse :wink:

das schreiben von einem Array in das DataSet1 (ohne grenzen) war garnicht das problem.

eine sache bleibt für mich jedoch noch offen:

wie (wenn überhaupt) kann man die ergebnisse von funktionen (also deren rückgabewerte) in die überwachung übernehmen.
lasse mir DataSet1 bisher immer über die MsgBox raus, weil wenn ich die Variable (das Array DataSet1) in die überwachung nehme, wird mir (trotz Prozedur: „alle“ und Modul: „alle“) immer angezeigt, dass der ist.

Hallo,

wenn du den Objekte nicht als Rueckgabewert der Funktion lieferst, sondern als Parameter ByRef uebergibst, hast du den Wert in der Ueberwachung „immer vor Augen“.

Ich verwende das gerne, da ich dann im Rueckgabewert der Funktion u.U. den Erfolg der Aktion innerhalb der Funktion liefern kann.

Tschau
Peter