Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1528to1532
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

Einzelne Spalten vonArray in Tabellenblatt sch

Einzelne Spalten vonArray in Tabellenblatt sch
16.12.2016 18:41:40
Winfried

Hallo zusammen,
ich hab ne Frage bzgl. Array-Handling.
Wie man ein ganzes Array auf einmal (ohne Schleife) in einen Bereich eines Tabellenblattes zurückschreiben kann ist mir klar.


dim Array as Variant
tb4 = sheets("....")
tb4.Range(tb4.Cells(1, 1), tb4.Cells(zeilen, spalten)) = ARRAY

Gibt es hier auch eine Möglichkeit nur die zweite Spalte des Arrays in eine bestimmte Spalte eines Tabellenblattes zurück zu schreiben, ohne dass ich dafür eine Schleife nutzen muss (die dritte Spalte des Arrays soll auf einmal in die 39. Spalte des Tabellenblattes zurückgeschrieben werden)?
Ich hatte das folgende schon in einem anderen Forum gefunden, was aber scheinbar nicht funktioniert:

tb4.Columns(39) = WorksheetFunction.Index(ARRAY, 0, 2)
Die "0" soll bedeuten dass alle Zeilen der 3ten Spalte des Arrays genommen werden, was sich mit  _
meinen "Index"-Kenntnissen aber nicht wirklich deckt....

Mach ich hier was falsch, oder kennt ihr eine andere Lösung?
Vielen Dank im Voraus für eure Hilfe & Mühe.
Winfried

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
geht schon so
16.12.2016 19:08:53
Michael
Hi,
das hatte ich grad Daten drin zum Testen:
Sub at()
Dim a
a = Range("B1:H32")
MsgBox "lb: " & LBound(a) & " lb(a,2 ): " & LBound(a, 2) & _
" ub: " & UBound(a) & " ub(a,2): " & UBound(a, 2)
Range("A1").Resize(UBound(a)) = WorksheetFunction.Index(a, 0, 3)
End Sub

Mit der msgbox kannst Du Dir mal die Grenzen des Arrays ansehen: wenn Du es direkt aus der Tabelle eingelesen hast (so wie oben), ist die erste "Zelle" des Arrays a(1,1).
Ich würde keine ganze Spalte zum Zurückschreiben angeben, sondern nur die Startzelle mit .resize, wobei man genaugenommen
Range("A1").Resize(UBound(a)-lbound(a)+1) = WorksheetFunction.Index(a, 0, 3)
nehmen sollte - dann ist das völlig unabhängig davon, ob es 0 oder 1 oder sonstwie basiert ist.
Schöne Grüße,
Michael
Anzeige
AW: geht schon so
20.12.2016 11:15:59
Winfried Seuwen
Hallo Michael,
sorry wenn ich mich erst jetzt melde, aber ich hatte ein paar Tage frei und war nicht am Rechner.
Vielen Dank noch für deine Hilfe, werde das gleich mal umsetzen =).
Viele Grüße
Winfried

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige