Excel VBA ReDim - Wie verwende ich VBA ReDim Preserve?

Inhaltsverzeichnis:

Anonim

Excel VBA ReDim

Wir können die Anzahl der Elemente in einem Array über VBA Redim anpassen. Redim ist keine Funktion, sondern ein dynamisches Speicherzuweisungsprogramm über die Redim-Anweisung. Wenn wir Redim verwenden, wird eine bestimmte Menge an Speicher für die Speicherung der Daten reserviert.

Wie verwende ich VBA ReDim Statement?

Anhand einiger Beispiele wird die Verwendung von VBA ReDim Statement erläutert.

Sie können diese VBA ReDim Excel-Vorlage hier herunterladen - VBA ReDim Excel-Vorlage

VBA ReDim - Beispiel # 1

Wenn wir Dim für ein Array verwenden, können wir den Wert des Datenspeichers in einem Array nicht ändern. Wenn wir jedoch Redim verwenden, können wir den in einem Array gespeicherten Wert ändern. Dieser Vorgang zum Ändern des Arrays wird als Neudimensionieren des Arrays bezeichnet.

Angenommen, wir haben ein Array A mit 4 Zellen, dann wird es mit definiert.

  • A (3) verdoppeln

Wie wir sehen können, haben alle Zellen "0" als gespeicherten Wert. Nehmen wir nun an, wenn wir das Maß A mit 3 Zellendaten neu dimensionieren und den Wert darin speichern, sieht es wie folgt aus.

  • ReDim B (2) As Double

B (0) = 1; B (1) = 3, B (2) = -6

Es wird so aussehen;

Wenn wir nun Zellen hinzufügen möchten, können wir dies tun. Dann weist es diesen Zellen automatisch die „0“ zu. Drücken Sie jetzt zum Implementieren von ReDim Alt + F11, um das VBA-Fenster zu öffnen. Wählen Sie im Menü Einfügen die Option Modul, um ein neues Fenster zu öffnen (siehe Abbildung unten).

Öffnen Sie nun Unterkategorie und fügen Sie einen beliebigen Namen hinzu. Da wir ReDim verwenden, haben wir den Namen UsingReDim .

Code:

 Sub UsingReDim () End Sub 

Definieren Sie vor der Definition von ReDim zunächst eine beliebige Ganzzahl. Hier haben wir es als „A“ mit der Array-Länge 3 definiert. Speichern Sie einige Werte in einem erstellten Array mit 3 Zellen, wie unten gezeigt.

Code:

 Sub UsingReDim () Dim A (2) As Integer ReDim A (2) A (0) = 1 A (1) = 2 A (2) = 3 End Sub 

Jetzt drucken wir die in Integer A gespeicherten Werte. Wir müssen das Meldungsfeld mit Hilfe des Befehls MsgBox wie unten gezeigt erstellen.

Code:

 Sub UsingReDim () Dim A (2) As Integer A (0) = 1 A (1) = 2 A (2) = 3 MsgBox A (0) MsgBox A (1) MsgBox A (2) End Sub 

Führen Sie nun den Code aus, indem Sie auf die Wiedergabetaste oder die Taste F5 klicken (siehe Abbildung unten).

Jetzt verwenden wir ReDim und es werden mehr als definierte Zeichen im Array gespeichert. Verwenden Sie dazu ReDim für die definierte Ganzzahl A. Zunächst wird die definierte Zellenzahl aus Dim entfernt. Die Verwendung der Redim-Funktion ist wie folgt:

  • ReDim A (2) wird für A (0) -, A (1) - und A (2) -Zellenarray verwendet.
  • ReDim A (4) wird für A (0) -, A (1) -, A (2) -, A (3) -, A (4) -Zellen mit zwei zusätzlichen Dummy-Zellen verwendet.

Code:

 Sub UsingReDim () Dim A () As Integer ReDim A (2) A (0) = 1 A (1) = 2 A (2) = 3 ReDim A (4) MsgBox A (0) MsgBox A (1) MsgBox A (2) End Sub 

Sobald Sie fertig sind, führen Sie den vollständigen Code durch Klicken auf die Wiedergabetaste oder mit der Taste F5 aus. Sobald wir den vollständigen Code ausgeführt haben, erhalten wir 3 Meldungsfelder mit einer Meldung, die nur "0" enthält, wie unten gezeigt.

Dies liegt daran, dass ReDim nur 3 Werte hat, aber keine gespeicherten Werte unter definierten Ganzzahlen enthält. Wenn Sie nur Redim verwenden, werden keine Werte gespeichert und die zuvor gespeicherten Werte werden darauf übertragen. Um dasselbe anzuwenden, müssen wir die Werte der definierten Ganzzahl A mit Hilfe von ReDim beibehalten. Durch die Verwendung von Preserve in VBA können wir den Wert in ReDim speichern. Dazu werden wir Preserve after ReDim in den unten gezeigten VBA-Codeas hinzufügen.

Code:

 Sub UsingReDim () Dim A () As Integer ReDim A (2) A (0) = 1 A (1) = 2 A (2) = 3 ReDim Preserve A (4) MsgBox A (0) MsgBox A (1) MsgBox A (2) End Sub 

Führen Sie nun den vollständigen Code erneut aus. Es werden 3 Meldungsfelder mit allen darin gespeicherten Werten angezeigt (siehe unten).

Jetzt müssen Sie sich fragen, warum wir A (4) mit ReDim Preserve verwendet haben?

Unten ist die Erklärung dafür. Wobei die 1., 2. und 3. Position des Arrays mit den Werten 1, 2 bzw. 3 belegt ist. Die vierte und fünfte Position, die die 3- und 4-Anzahl von Array A darstellen, sind Dummy-Zellen. Das heißt, wenn keine Daten an der 4. und 5. Position gespeichert sind, wird automatisch der Wert „0“ berücksichtigt und die Nachricht wird nicht ausgefüllt.

Wenn wir versuchen, die in der 4. und 5. Position des ReDim-Arrays gespeicherten Werte anzuzeigen, müssen wir auch für diese beiden Positionen ein Meldungsfeld einfügen.

Code:

 Sub UsingReDim () Dim A () As Integer ReDim A (3) A (0) = 1 A (1) = 2 A (2) = 3 ReDim Preserve A (4) MsgBox A (0) MsgBox A (1) MsgBox A (2) MsgBox A (3) MsgBox A (4) End Sub 

Da wir eine Nachricht hinzugefügt haben, die für die 4. und 5. Position markiert ist, ohne einen Wert zu speichern. Führen Sie nun den Code erneut aus.

Wie wir in den obigen Screenshots sehen können, haben wir für die 4. und 5. Position Meldungsfelder, aber der Wert wird als "0" angezeigt. Was bedeutet, erklärt die obige Aussage. Wenn kein Wert definiert ist, berücksichtigt ReDim Preserve die restlichen Zellen automatisch und füllt sie mit „0“.

VBA ReDim - Beispiel # 2

Nun wollen wir sehen, wie ReDim Statement mit String anstelle von Integer verwendet wird.

Code:

 Sub UsingReDim () Dim A () As String ReDim A (3) A (0) = "Kunde" A (1) = "Produkt" A (2) = "Produkt-ID" ReDim Preserve A (4) MsgBox A (0 ) MsgBox A (1) MsgBox A (2) MsgBox A (3) MsgBox A (4) End Sub 

Führen Sie anschließend den vollständigen Code mit der Taste F5 oder manuell wie unten gezeigt aus.

Wie wir im obigen Screenshot sehen können, erhalten wir alle definierten und gespeicherten Zeichen in den ersten 3 Meldungsfeldern. Und in der 4. und 5. Box bekommen wir nichts. As ReDim speichert keinen Wert, wenn nicht definiert. Bei Ganzzahlen wird dies als "0" wiedergegeben, bei Zeichenfolge werden jedoch nur leere Nachrichten angezeigt.

Vorteile von Excel VBA ReDim

  • Mit VBA ReDim können wir die Dimensionswerte neu definieren.
  • Wir können so viele dimensionale Arrays mit keinem oder null Wert definieren und die Werte später speichern.
  • ReDim bedeutet Re-Dimensioning ermöglicht das Hinzufügen einer beliebigen Anzahl von Datenfeldern, ohne die Größe der gespeicherten Daten zu erhöhen.

Dinge, an die man sich erinnern sollte

  • Denken Sie immer daran, Preserve nach ReDim in VBA hinzuzufügen, damit die zuvor verwendeten Dimensionen gespeichert werden.
  • Wenn eine Dimension als Zeichenfolge definiert ist, wird jede Position, die beim Zuweisen von Werten leer gelassen wird, leer gelassen, und sobald wir dieselbe mit Hilfe des Meldungsfelds drucken, wird auch ein leeres Meldungsfeld angezeigt.
  • Wenn wir die Dimensionen Dim mit 3 Zeichen oder Zellenwerten definiert haben, können wir in ReDim eine beliebige Anzahl von Dimensionen verwenden, die bereits definierte und gespeicherte Werte in Dim enthalten.

Empfohlene Artikel

Dies war eine Anleitung zu Excel VBA ReDim. Hier wurde die Verwendung von VBA ReDim Statement zum Entfernen von Leerzeichen zusammen mit einigen praktischen Beispielen und einer herunterladbaren Excel-Vorlage erläutert. Sie können auch unsere anderen Artikelvorschläge durchgehen -

  1. Wie verwende ich VBA On Error Statement?
  2. Zahlenformat in VBA
  3. Wie benutze ich die VBA-Suchfunktion?
  4. VBA-TRIM-Funktion