Erstellen Sie ein Array aus einem bestimmten Bereich in Excel mit VBA

Bilal Shahid 15 Februar 2024
  1. Arrays in VBA
  2. Erstellen Sie ein Array mit einem bestimmten Zellbereich
Erstellen Sie ein Array aus einem bestimmten Bereich in Excel mit VBA

Dieses Tutorial informiert uns über Arrays in VBA und zeigt, wie wir ein Array mit dem angegebenen Bereich in MS Excel mit VBA erstellen können.

Bevor Sie sich dem Hauptthema zuwenden, ist es wichtig, etwas über Arrays in VBA zu lernen. Fangen wir damit an.

Arrays in VBA

Das Array ist eine Sammlung ähnlicher Objekte, auf die wir mit Hilfe eines Index zugreifen können. Es ist ziemlich einfach, ein Array in VBA zu definieren. Wir können zwei Arten von Arrays in VBA deklarieren - statisches Array und dynamisches Array.

Ein statisches Array ist ein Array fester Größe, das nur die Anzahl von Werten speichern kann, die es definiert hat. Sehen Sie sich das folgende Beispiel an, in dem wir ein Array von string-Datentypen mit der Größe 7 deklarieren:

 Dim arr(7) As String

Ein dynamisches Array hat keine definierte Grösse und wir können es im Programm erweitern. Wir können es mit einer der beiden unten genannten Anweisungen deklarieren:

Dim arr() As String

ODER

Dim arr As Variant

Es ist ziemlich einfach, einem Array in VBA Werte zuzuweisen. Für ein statisches Array können wir die folgende Anweisung verwenden, um Werte zuzuweisen:

arr (index) = Value

Anfangs wird das dynamische Array nicht mit Grösse deklariert; Um also einem dynamischen Array Werte zuzuweisen, deklarieren Sie es mit der Größe neu und weisen Sie dann einen beliebigen Wert zu.

ReDim arr(size)
arr (index) = value

Jetzt wissen wir genug über Arrays in VBA, lernen wir, wie man ein Array mit dem angegebenen Bereich in Microsoft Excel mit VBA erstellt.

Erstellen Sie ein Array mit einem bestimmten Zellbereich

Der oben geschriebene Abschnitt beschreibt, wie ein einfaches Array deklariert wird. Es wird jedoch nicht erwähnt, ein Array zu erstellen, das Werte aus einem bestimmten Zellbereich in Microsoft Excel enthält.

Um ein Array mit den Zellenwerten zuzuweisen, können wir die folgende Code-Anweisung verwenden:

Dim arr As Variant 
arr= Range("A1:A10").Value

Das arr wird als dynamisches Array deklariert, damit es den ihm zugewiesenen Zellbereich annehmen kann. Die Code-Anweisung wird perfekt ausgeführt, erstellt jedoch ein zweidimensionales Array über den Zellbereich A1:A10. Wir können es im Bild unten sehen:

Erstellen Sie ein Array aus einem bestimmten Bereich in Excel mit vba - Bild eins

Hinweis: Der Array-Index beginnt bei 1 statt 0.

Es kann für Benutzer, insbesondere Anfänger, schwierig sein, mit einem zweidimensionalen Array zu arbeiten.

Daher ist es wichtig, eine Lösung zu finden, die das zweidimensionale Array in ein eindimensionales Array umwandeln kann, da es immer einfacher ist, mit einem eindimensionalen Array zu arbeiten.

Konvertieren Sie das 2D-Array in ein 1D-Array

Beim Konvertieren des zweidimensionalen Arrays in ein eindimensionales Array gibt es zwei Szenarien. Ein Szenario ist, wenn der Zellbereich der einer Spalte ist. Das andere Szenario ist, wenn der Zellbereich der einer Zeile ist.

Spaltenzellenbereich

Wenn Sie die Werte einer Spalte in einem eindimensionalen Array speichern möchten, können Sie die Funktion Application.Transpose() auf die Funktion Range() anwenden.

Es wird ein eindimensionales Array zurückgegeben, das die Zellwerte aus dem in der Funktion Range() erwähnten Spaltenbereich enthält. Dafür können wir den folgenden Codezaun verwenden:

Dim myArr As Variant
myArr = Application.Transpose(Range("A1:A10"))

Bei der Ausführung erzeugen die Codeanweisungen die folgenden Ergebnisse:

Erstellen Sie ein Array aus einem bestimmten Bereich in Excel mit vba - Bild zwei

Zeilenzellenbereich

Die Funktion Application.Transpose() muss zweimal auf die Funktion Range() angewendet werden, wenn Sie die Werte einer Zeile in einem eindimensionalen Array speichern möchten.

Das resultierende Array ist ein eindimensionales Array, das die Zellenwerte aus dem in der Funktion Range() erwähnten Zeilenbereich enthält. Dazu können wir den folgenden Codeblock verwenden:

Dim myArr As Variant
myArr = Application.Transpose(Application.Transpose(Range("A1:J1")))

Bei der Ausführung erzeugen die Codeanweisungen die folgenden Ergebnisse:

Erstellen Sie ein Array aus einem bestimmten Bereich in Excel mit vba - Bild drei

Hinweis: Wir stellen fest, dass das Array in beiden Szenarien mit Index 1 statt mit Index 0 beginnt. Die Funktion Application.Transpose() verändert die Indizes des Arrays nicht.

Es ist auch wichtig zu beachten, dass die neueren Versionen von Microsoft Excel eine modifizierte Version der Funktion Application.Transpose() verwenden.

Die Funktion Application.WorksheetFunction.Transpose() wird in den neueren Versionen von Microsoft Excel als Alternative zur Funktion Application.Transpose() verwendet.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Verwandter Artikel - VBA Array