Hallo liebe Forumsgemeinschaft,
ich bin letztens auf eine (für mich) knifflige Aufgabe gestoßen.
Mein Ziel ist es ein ein Datenfeld zusammenhängende Ranges einzulesen und am Schluss auf einmal in ein Excelblatt zu schreiben. Nun die Besonderheit daran ist, dass das Befüllen nicht über einzelne Zellen geschehen darf, sondern pro Schleifendurchlauf eine ganze Range einlesen muss. Die Ausgabe muss auf einmal funktionieren. Aufgrund des gewaltigen Rechenaufwands dauert eine Berechnun mit Doppelschleifen einige Stunden und ist somit nicht mehr tragbar. Das bestehende Programm kann auch nicht umgeschrieben werden und muss weiterhin in Excel erfolgen.
Soviel zum Hintergrund. Das technische Problem für mich ist folgendes:
Es wird eine Schleife durchgegangen, welche den Index des Datenfelds erhöht und in der das Datenfeld dann die Zeile einlesen soll. Leider ist es immer die selbe Range (die Koordinaten werden also nicht verändert). Pro Schleifendurchgang ändern sich nur die Werte in der Range.
Folgendes Vorgehen lässt mich das Datenfeld am Ende nicht aufeinmal auslesen (was unbedingt erforderlich ist), obwohl bei Zugriff auf die einzelnen Koordinaten alle richtig befüllt sind:
sub test
dim Matrix(), i%
redim Matrix(1 to 6, 1 to 3)
for i = 1 to 6
Matrix(i, 1)= Range("A1: C1")
'die Werte in der Range verändern sich im Tabellenblatt
next i
Sheets("Ergebnis").Range("A1:C6")=Matrix()
'geht nicht
Sheets("Ergebnis").Range("A1:C6")=Matrix(1,1)
'liefert hingegen die erste gespeicherte Range.... usw.
end sub
Bei Dimensionierung mit nicht dimensionierten Datenfeldern funktioniert hier dann zwar die Ausgabe auf einmal, allerdings kann ich beim befüllen nicht auf Koordinaten zugreifen, somit steht immer nur die letzte Range drinnen...
Ich hoffe jemand von euch kann mir einen Tipp hierzu geben!
Noch als kleine Info:
Wären die Ranges untereinander angeordnet bekomme ich alles so hin wie ich möchte, das ist aber leider nicht möglich...
Danke schonmal!
Liebe Grüße
Christoph
|