Microsoft Excel

Herbers Excel/VBA-Archiv

Array in Tabelle Fehler

Betrifft: Array in Tabelle Fehler von: Blaumann
Geschrieben am: 13.10.2014 20:58:23

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

  

Betrifft: AW: Array in Tabelle Fehler von: Daniel
Geschrieben am: 13.10.2014 21:39:35

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


  

Betrifft: AW: Array in Tabelle Fehler von: Blaumann
Geschrieben am: 13.10.2014 23:06:55

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


  

Betrifft: AW: Array in Tabelle Fehler von: Raphael H
Geschrieben am: 13.10.2014 21:39:43

Hallo Peter,

hast du es schon einmal ohne das Transpose versucht?
Und warum nimmst du beim 2 Ubound noch +1?

Gruess
Raphael


  

Betrifft: 2x Transpose ist nur sinnvoll, wenn man einen ... von: Luc:-?
Geschrieben am: 13.10.2014 22:57:08

…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 …


  

Betrifft: AW: 2x Transpose ist nur sinnvoll, wenn man einen ... von: Blaumann
Geschrieben am: 13.10.2014 23:26:06

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


  

Betrifft: Das wäre dann ein ganz normales 2dimensionales ... von: Luc:-?
Geschrieben am: 14.10.2014 00:00:43

…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 :-?


  

Betrifft: Ich weiß, blöd gelaufen von: Blaumann
Geschrieben am: 14.10.2014 11:13:45

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


  

Betrifft: Im Zweifelsfall 1fach in der VBE-Hilfe nachlesen! von: Luc:-?
Geschrieben am: 14.10.2014 12:11:28

;-)
Gruß, Luc :-?


 

Beiträge aus den Excel-Beispielen zum Thema "Array in Tabelle Fehler"