PDA

Vollständige Version anzeigen : Variablen Arraynamen


mindhunter
04.10.2016, 15:02
Hallo,

kann für mehrere Arrays ein variabler Name vergeben werden? Es sollen aus verschiedenen Tabellen Daten in Arrays eingelesen und später zu einem Array wieder zusammengeführt werden. Wie muss solch ein Array deklariert werden?
z. B. myArray1(), myArray2(), myArray3()


For i = 1 to 3
Dim (myArray & i())
Next i

mathieu_91
04.10.2016, 15:08
Hallo,

geht meines Wissens nach nicht. Eine Variable ist ein fester Name.

Du brauchst für dein Problem nur ein Array.

Eine Schleife durch die Tabellen und zählen wie viele Daten du eigentlich insgesamt hast.

Redim Array1 (1 To Summe Zeilen aus allen Tabellen, 1 To meiste Spalten)

Damit ist dein Array1 schonmal für alles gerüstet und kann im worst case alle Daten in sich tragen.

Anschließend erneut durch alle Sheets, Array1 füllen, fertig.

Grüße

Mathieu

mindhunter
04.10.2016, 15:21
Okay, ich habe 3 Tabellen mit verschiedenen Daten und einem Schlüsselfeld. Ich dachte ich schreibe die Tabelleninhalte jeweils in ein Array und hole aus den 3 Tabellen die Informationen, welche zu dem Schlüssel passen und schreibe z. B. in ein 4 Array!

mathieu_91
04.10.2016, 15:23
Hallo,

mach doch mal eine Beispieldatei, ggf. lässt sich so dein Problem schneller und effizienter lösen. :)

Grüße

Mathieu

mindhunter
04.10.2016, 15:40
Lieben Dank. Beispieldatei habe ich hochgeladen. Ich nehme Arrays, da bei den großen Datenmengen die Perfomance am besten ist?

Nepumuk
04.10.2016, 17:23
Hallo,

hier mal ein Beispiel wie du das über eine Collection lösen kannst:

<div style="background-color:#FFFFFF; border-width:2px; border-style: groove; border-color:#ff9966; padding:4px;"><nobr><span style="font-family:Courier New,Arial; font-size:9pt ;" ><span style="color:#000080"; >Option</span> <span style="color:#000080"; >Explicit</span><br /><br /><b><span style="color:#000080"; >Public</span> <span style="color:#000080"; >Sub</span> Test()</b><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Dim</span> objCollection <span style="color:#000080"; >As</span> Collection<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Set</span> objCollection = <span style="color:#000080"; >New</span> Collection<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >With</span> Tabelle1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> objCollection.Add(Item:=.Range(.Cells(2, 1), .Cells(.Rows.Count, 3).End(xlUp)).Value, Key:=<span style="color:#800000"; >"Array1"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >End</span> <span style="color:#000080"; >With</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >With</span> Tabelle2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> objCollection.Add(Item:=.Range(.Cells(2, 1), .Cells(.Rows.Count, 2).End(xlUp)).Value, Key:=<span style="color:#800000"; >"Array2"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >End</span> <span style="color:#000080"; >With</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >With</span> Tabelle3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> objCollection.Add(Item:=.Range(.Cells(2, 1), .Cells(.Rows.Count, 3).End(xlUp)).Value, Key:=<span style="color:#800000"; >"Array3"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >End</span> <span style="color:#000080"; >With</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> MsgBox(objCollection.Item(Index:=<span style="color:#800000"; >"Array1"</span>)(1, 1))<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> MsgBox(objCollection.Item(Index:=<span style="color:#800000"; >"Array1"</span>)(1, 2))<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> MsgBox(objCollection.Item(Index:=<span style="color:#800000"; >"Array1"</span>)(1, 3))<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> MsgBox(objCollection.Item(Index:=<span style="color:#800000"; >"Array2"</span>)(1, 1))<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> MsgBox(objCollection.Item(Index:=<span style="color:#800000"; >"Array2"</span>)(1, 2))<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> MsgBox(objCollection.Item(Index:=<span style="color:#800000"; >"Array3"</span>)(1, 1))<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> MsgBox(objCollection.Item(Index:=<span style="color:#800000"; >"Array3"</span>)(1, 2))<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Call</span> MsgBox(objCollection.Item(Index:=<span style="color:#800000"; >"Array3"</span>)(1, 3))<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Set</span> objCollection = <span style="color:#000080"; >Nothing</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b><br /></span></nobr></div>
Es wäre aber sicher hilfreich wenn wir wüssten was du mit den Arrays vor hast.

mindhunter
05.10.2016, 09:59
Ja, was möchte ich mit den Arrays machen. In den Arrays sind zu der Lieferantennummer passende Daten. Diese sollen gesucht und gesammelt ausgegeben werden. Also eine Übersicht aller Daten in einem Blatt zusammengefasst. Ursprünglich kommen die Daten aus verschiedenen Exceldateien. Damit es nicht noch mehr umfangreicher wird, habe ich die Daten in verschiedene Blätter kopiert. Später soll über eine Listbox in Tabelle4 der Lieferant ausgewählt und aus den Exceldaten die passenenden Daten wie Ort, Straße usw. in definierte Felder ausgegeben werden. Ich habe es mal aufgemalt, was ich meine.

Nepumuk
05.10.2016, 12:33
Hallo,

na da reichen doch 3 einfache Arrays.