Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1384to1388
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

Array in Tabelle Fehler

Array in Tabelle Fehler
13.10.2014 20:58:23
Blaumann
Hi,
möchte ein Array mit 4 Spalten in die Tabelle schreiben.
bekomme Fehler Index aus Bereich
wks2.Cells(2, 1).Resize(UBound(arr, 1), UBound(arr(1), 3) + 1) = _
WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))

Es soll in wks2 Range A2 angefangen werden.
Gruss Peter

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array in Tabelle Fehler
13.10.2014 21:39:35
Daniel
Hi
Wenn du ein 2-d-Array mit 4 spalten hast, welches mit Array = Range(...).Value erstellt wurde, bzw wenn du sicher bist, dass die Basis (kleinster Index) 1 ist, dann so:
wks2.Cells(2, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr
Bei unbekannter Basis:
wks2.Cells(2, 1).Resize(UBound(arr, 1) - LBound(arr, 1) + 1, UBound(arr, 2) - LBound(arr, 2) + 1) = arr

Gruß Daniel

AW: Array in Tabelle Fehler
13.10.2014 23:06:55
Blaumann
Hi,
danke für eure Hilfe, mit
wks2.Cells(2, 1).Resize(UBound(arr, 1), UBound(arr, 2)+1) = arr
funktioniert es jetzt.
die 1 muß ich dazuzählen da "UBound(arr, 2)" mir 3 wiedergibt (0 -3)
Gruss Peter

Anzeige
AW: Array in Tabelle Fehler
13.10.2014 21:39:43
Raphael
Hallo Peter,
hast du es schon einmal ohne das Transpose versucht?
Und warum nimmst du beim 2 Ubound noch +1?
Gruess
Raphael

2x Transpose ist nur sinnvoll, wenn man einen ...
13.10.2014 22:57:08
Luc:-?
…horizontal orientieren Bereichsvektor dauerhaft von seinem ZellBezug trennen will, Peter,
was aber schon zuvor geschehen sein sollte, um einen wirklich 1dimensionalen DatenfeldVektor zu erhalten. Erst bei Zuweisung an einen ZellBereich vorgenommen, ist das sinnlos.
Wenn bei sachgerechter Wandlung des ZellBereichs- in einen Datenfeld­Vektor eine direkte Zuweisung der Datenfeld­Werte an einen TeilBereich einer Zeile erfolgen soll, könnte die Anweisung in deinem Fall wks2.Cells(2, 1).Resize(, UBound(arr) - LBound(arr)) = arr lauten.
Soll ein horizontaler Datenfeld­Vektor aber in den TeilBereich einer Spalte eingetragen wdn, könnte wks2.Cells(2, 1).Resize(UBound(arr) - LBound(arr)) = WorksheetFunction.Transpose(arr) geschrieben wdn.
In allen anderen Fällen, also arr 2dimensional als Matrix, könnte die Anweisung so lauten:
wks2.Cells(2, 1).Resize(UBound(arr, 1) - LBound(arr, 1), UBound(arr, 2) - LBound(arr, 2)) = arr
Die von dir verwendete Anweisung resized den Wiedergabe­Bereich zeilenmäßig allgemein auf die Größe der 1.Dimension (bei 2dimensionalen Datenfeldern die ZeilenAnzahl) und spaltenmäßig auf die Größe der 3.Dimension des Elements 1 von arr zzgl 1, was, falls das Absicht ist, darauf hindeutet, dass du ein auf einem XlBlatt nicht abbildbares (und außerdem irreguläres) Datenfeld (Array) gebildet hast. Von dem kannst du nur Ausschnitte in einer 2dimensionalen Tabelle abbilden, was aber diverse Operationen erforderlich macht. Allerhöchstens lassen sich 3 Dimensionen in eine 2dimensionale Tabelle transferieren (nicht direkt anzeigen), aber das ist noch komplizierter und dürfte deine Fähigkeiten (und die vieler AWer) weit übersteigen. ;-]
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: 2x Transpose ist nur sinnvoll, wenn man einen ...
13.10.2014 23:26:06
Blaumann
Hi Luc,
hast recht, deine Erläuterungen sind für mich böhmische Dörfer, habe so meine Probleme mit den Arrays.
Auf jeden Fall funktioniert es jetzt so, wie es sein sollte.
Das Array wird in einer Schleife mit Vorbedingung so eingelesen
        myarr(k, 0) = wks.Cells(i, 1).Value
myarr(k, 1) = wks.Cells(i, 2).Value
myarr(k, 2) = wks.Cells(i, 3).Value
myarr(k, 3) = wks.Cells(i, 4).Value
k = k + 1
Gruss Peter

Das wäre dann ein ganz normales 2dimensionales ...
14.10.2014 00:00:43
Luc:-?
…Datenfeld, eine sog Matrix, Peter,
also der Sonst-Fall. Da fragt man sich dann doch schon, warum du das Resizen so kompliziert dargestellt hast?! Rein äußerlich ähnliche Konstruktionen kommen in manchen meiner Pgmm vor, aber bei einem „VBA-Bescheidenen“… ;-]
Luc :-?

Anzeige
Ich weiß, blöd gelaufen
14.10.2014 11:13:45
Blaumann
Hi Luc,
wie gesagt, habe so meine Probleme mit den Arrays und wenn dann mir noch so einfache Fehler passieren, ist das bestimmt nicht "Gut".
Bin einfach nicht darauf gekommen, das die 1 für Zeilen und die 2 für Spalten steht.
Gruss Peter

Im Zweifelsfall 1fach in der VBE-Hilfe nachlesen!
14.10.2014 12:11:28
Luc:-?
;-)
Gruß, Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige