Guten Morgen,
ich hab heute mal wieder Vor eine meiner Tabellen mit VBA ein bisschen schlauer zu machen Dabei ist die Datei so aufgebaut, dass auf Tabelle1 die ergebnisse Zusammengefasst werden und auf Tabelle2,Tabelle3 und Tabelle4 die dafür notwenigen Daten liegen. Auf Tabelle 2-4 werden jeweils die selben Zellen eingelesen und jeweils in ein Array abgespeichert. Bisher habe ich für jedes Tabellenblatt ein Array gehabt, was jedoch in 3x mehr oder weniger dem gleichen Code mündet.
Da man Excel VBA Code nicht kollabieren kann bin ich natürlich bestrebt den Code so Schlank wie möglich zu halten ... Die Lösung dafür wäre ein 2 Dimensionales Array statt 3 Eindimensionalen Arrays zu haben. Problem ist aber dass ich ja das ganze in der Form vorliegen habe:
Was ich dann aber bräuchte wäre ja ungefär
For i=1 to 200
xyz(i)=Tabelle2.Cells(3+i,5)
next
afaik ist dies aber nicht möglich ... wie kann ich je nach Zählervariable das Tabellenblatt wechseln? bzw gibt es eine andere Möglichkeit?
bisher sieht mein code ungefär so aus:
Da das einlesen natürlich nicht nur ein Einzeiler ist, wird es dadurch schnell unübersichtlich und Fehleranfällig zumal ich bei der Ausgabe auch statt einer Doppelschleife und einem 2 Dimensionalen Array auch 3 Eindimensionale Arrays aufrufen muss
Gruß
Pyrukar
PS: ich bin kein Programmierer, daher hab ich, auch oben
ich hab heute mal wieder Vor eine meiner Tabellen mit VBA ein bisschen schlauer zu machen Dabei ist die Datei so aufgebaut, dass auf Tabelle1 die ergebnisse Zusammengefasst werden und auf Tabelle2,Tabelle3 und Tabelle4 die dafür notwenigen Daten liegen. Auf Tabelle 2-4 werden jeweils die selben Zellen eingelesen und jeweils in ein Array abgespeichert. Bisher habe ich für jedes Tabellenblatt ein Array gehabt, was jedoch in 3x mehr oder weniger dem gleichen Code mündet.
Da man Excel VBA Code nicht kollabieren kann bin ich natürlich bestrebt den Code so Schlank wie möglich zu halten ... Die Lösung dafür wäre ein 2 Dimensionales Array statt 3 Eindimensionalen Arrays zu haben. Problem ist aber dass ich ja das ganze in der Form vorliegen habe:
Code:
For i=1 to 200
xyz(i)=Tabelle2.Cells(3+i,5)
next
For i=1 to 200
xyz(i)=Tabelle2.Cells(3+i,5)
next
Code:
For k=1 to 3
For i=1 to 200
xyz(k,i)=Tabelle(1+k).Cells(3+i,5)
next
next
afaik ist dies aber nicht möglich ... wie kann ich je nach Zählervariable das Tabellenblatt wechseln? bzw gibt es eine andere Möglichkeit?
bisher sieht mein code ungefär so aus:
Code:
For i=1 to 200
xyz(i)=Tabelle2.Cells(3+i,5)
abc(i)=Tabelle3.Cells(3+i,5)
def(i)=Tabelle4.Cells(3+i,5)
next
Da das einlesen natürlich nicht nur ein Einzeiler ist, wird es dadurch schnell unübersichtlich und Fehleranfällig zumal ich bei der Ausgabe auch statt einer Doppelschleife und einem 2 Dimensionalen Array auch 3 Eindimensionale Arrays aufrufen muss
Gruß
Pyrukar
PS: ich bin kein Programmierer, daher hab ich, auch oben
Option Base 1
eingegeben bevor sich jemand wundert warum ich das Array erst mit der 1 befülle und nicht mit der 0 ich finds so angenehmer