Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1712to1716
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

Vba: Array dynamisch dimensionieren und einfügen

Vba: Array dynamisch dimensionieren und einfügen
30.09.2019 16:50:40
Christian
Grüßt euch,
Ich habe noch einige Verständnisprobleme bei der Funktion .rezise.
Ich möchte einen mit Daten befüllten Array, in mein Tabellenblatt einfügen.
Da der Array seine Größe dynamisch ändert, muss sich dementsprechend auch der Ausgabebereich vergrößern.
Der Code funktioniert soweit auch, ich muss nur bisher immer händisch die letzte Zahl im . rezise Befehl anpassen.

Renditen.Range(Renditen.Cells(6, (letzteSpaltestartNeu + 2)), Renditen.Cells(UBound(X, 1), (letzteSpaltestartNeu + 2))).Resize(UBound(X, 1), 3) = X
bisher habe ich die Spalte (im obigen Beispielcode, die 3 am Ende) händisch angepasst. Dies soll aber dynamisch passieren.
die Zeilengröße passt sich ja über die Ubound funktion dynamisch an.
Wie mach ich das nun mit der Spaltengröße?
Vielen Dank für eure Hilfe.
Grüße
Christian.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vba: Array dynamisch dimensionieren und einfügen
30.09.2019 17:02:42
Daniel
Hi
schau mal nach, was Ubound(..., 1) bedeutet.
wenns ein 1 gibt, gibt's vermutlich auch einen anderen Wert, den man hier einsetzen könnte, in der Regel den benachbarten Wert 0 oder 2.
überlege mal, was es in einem 2-dimensionalen Array alles gibt und wofür dann dieser andere Wert in der UBound-Funktion stehen könnte.
und wie gesagt, du arbeitest mit 2-dimensionalen Arrays.
und noch ein Tipp: wenn du sowieso die Größe des Zellbereichs mit Resize bestimmst, dann reicht die Angabe der linken oberen Eckzelle aus, weil das .Resize die Größe der Range "überspielt"
Gruß Daniel
Anzeige
AW: Vba: Array dynamisch dimensionieren und einfügen
30.09.2019 17:19:02
onur
" in der Regel den benachbarten Wert 0 " - bist du sicher ?
AW: Vba: Array dynamisch dimensionieren und einfügen
30.09.2019 17:33:24
Daniel
omg. ist ja nur ein Beispiel, um zum selbst ausprobieren und Experimentieren anzuregen.
da darf man auch mal testen, was passiert wenn man einen unpassenden Wert vorgibt.
Gibt ja auch die Variante WAHR und FALSCH, die dann 1 und 0 sind, wenn man wegen der kürzeren Schreibweise mit Zahlenwerten arbeitet.
und 0 ist von 1 genauso ein Nachbar wie 2, nur halt nicht rechts, sondern links.
so what.
Gruß Daniel
AW: Vba: Array dynamisch dimensionieren und einfügen
30.09.2019 17:38:54
Christian
Hi onur und Daniel,
Renditen.Range(Renditen.Cells(6, (letzteSpaltestartNeu + 2)), Renditen.Cells(UBound(X, 1), (letzteSpaltestartNeu + 2))).Resize(UBound(X, 1), UBound(X, 2)) = X
mein Code habe ich nun so geschrieben. Könnte man diesen noch vereinfachen?
Das funktioniert.
Danke für eure "Anregungen". Ich denke so langsam komme ich hinter die Array Eigenschaften :D:D.
Grüße Christian
Anzeige
AW: Vba: Array dynamisch dimensionieren und einfügen
30.09.2019 17:45:55
Daniel
naja, wie ich dir schon schrieb: wenn du die größe des Zellbereichs mit .Resize bestimmst, reicht als Ausgangszellbereich davor die linke obere Eckzelle.
wenn ich beispielsweise den Zellbereich von A1:J10 beschreiben will, nehme ich entweder:
Cells(1, 1).Resize(10, 10) oder Range(Cells(1, 1), Cells(10, 10))
aber
Range(Cells(1, 1), Cells(10, 10)).Resize(10, 10) ist doppeltgemoppelt
wenn ich Start- und Endzeile kenne, nehme ich Range(Cells, Cells)
kenne ich jedoch Startzeile und die Anzahl der benötigten Zeilen, dann Cells.Resize
klaro?
Gruß Daniel
AW: Vba: Array dynamisch dimensionieren und einfügen
30.09.2019 17:48:11
Christian
Hi daniel,
hatte dir zu schnell geantwortet.
Nun noch vereinfacht, sieht der Code so aus.
Renditen.Cells(6, (letzteSpaltestartNeu + 2)).Resize(UBound(X, 1), UBound(X, 2)) = X
Funktioniert einwandfrei.
Vielen Dank für die schnelle kompetente Hilfe.
Christian
Anzeige
AW: Vba: Array dynamisch dimensionieren und einfügen
30.09.2019 17:20:52
Christian
Hallo Daniel,
"schau mal nach, was Ubound(..., 1) bedeutet." das ist mir klar, dass die 1 oder 2 oder.... die 2. Dimension also die Spaltenanzahl ist.
Nur ich weiß ja zu Beginn nicht, wie viele Spalten der Array haben wird.
Wie meinst du das mit dem "dann reicht die Angabe der linken oberen Eckzelle aus"?
Ich könnte also nur .Resize(Zelle,Spalte der Linken oberen Ecke angeben) ohne Ubound(X,1),3) ?
Für micht ist das verständnis mit den Arrays noch sehr sehr schlecht.
Das ist mein erstes VBA Projekt und allgemein erste Erfahrungen mit Codes.
Grüße Christian
Anzeige
AW: Vba: Array dynamisch dimensionieren und einfügen
30.09.2019 17:27:57
Christian
Hallo Daniel,
"schau mal nach, was Ubound(..., 1) bedeutet." das ist mir klar, dass die 1 oder 2 oder.... die 2. Dimension also die Spaltenanzahl ist.
Nur ich weiß ja zu Beginn nicht, wie viele Spalten der Array haben wird.
Wie meinst du das mit dem "dann reicht die Angabe der linken oberen Eckzelle aus"?
Ich könnte also nur .Resize(Zelle,Spalte der Linken oberen Ecke angeben) ohne Ubound(X,1),3) ?
Für micht ist das verständnis mit den Arrays noch sehr sehr schlecht.
Das ist mein erstes VBA Projekt und allgemein erste Erfahrungen mit Codes.
Grüße Christian
Anzeige
AW: Vba: Array dynamisch dimensionieren und einfügen
30.09.2019 17:38:03
Daniel
nein, natürlich mit Ubound.
ich meinte folgendes:
wenn du Schreibst Range("A1:Z1000").Resize(5, 10) bekommst du das gleiche Ergebnis wie mit Range("A1").Resize(5, 10), weil eben das Resize die endgültige Größe vorgibt und von der vorgesetzten Range nur die linke obere Eckzelle verwendet wird.
das Ubound brauchst du natürlich, um die Werte für das Resize zu ermitteln.
mir gings da um das Range(Cells(a, b), Cells(c, d)).Resize(x, y), hier reichet: Cells(a, b).resize(x, y) völlig aus.
Gruß Daniel

14 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige