2014-11-07 19 views
6

Ich habe mich gefragt, wie man ein mehrdimensionales Array in Excel VBA füllt. Ein 1D-Array kann gefüllt werden, wie folgt:Mehrdimensionales Array füllen

Dim myarray as variant 

myarray = Array("sheep", "goat", "chicken") 

Wie würde ich jede Reihe separat für ein mehrdimensionales Array füllen?

+0

Sie können ein 2-dimensionales Array schnell füllen, indem ein dynamisches Array verwenden und auf einem Arbeitsblatt die Daten in einen Bereich eintritt. Dann können Sie einfach: 'array = Range (" Range ")'. Bei mehr als 2 Dimensionen müssen Sie jeden Wert einzeln lesen. –

+0

Das ist ein 1-D-Array, das Sie dort haben - haben Sie wirklich multidimensional gemeint? –

Antwort

12

Sie können dies tun:

Dim a 
a = [{1,2;3,4;5,6}] 

Einschränkungen:

  • Dies funktioniert nur mit Arrays vom Typ Variant, weil [x] ist eine Abkürzung für Evaluate("x") was bedeutet, dass x über Excel interpretiert wird, und Excel gibt nur Varianten zurück. Also Dim a As Variant deklarieren oder ein Array Dim a() As Variant funktioniert gut. Aber keine andere Art von Anordnung, z.B. Dim a() As String schlägt fehl.

  • Dies funktioniert nur für eine bestimmte Art von mehrdimensionales Array, nämlich zwei -dimensionalen Arrays. Nicht drei-, vier- usw. dimensional.

+0

Wirklich ?? Das ist absolut cool! Wie um alles in der Welt habe ich diese Syntax nie zuvor gesehen ?! –

+1

Es sollte beachtet werden, dass dies nur wie gezeigt funktioniert. Eine Variable, die als Array deklariert ist, kann auf diese Weise nicht geladen werden. Sie erhalten einen Kompilierfehler: "Kann Array nicht zugewiesen werden." –

+0

@ jbarker2160: Nun, nicht ganz. Siehe meine Bearbeitung zur Antwort. –