Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Array definieren?!

Forumthread: VBA: Array definieren?!

VBA: Array definieren?!
André
Moin zusammen,
ich muß in VBA ein Array definieren. Üblicherweise mache ich das wie folgt:
DIM MeinArray(2) AS Single
MeinArray(0) = 12.3
MeinArray(1) = 18.1
MeinArray(2) = 7.9
Soweit funktioniert das noch sehr gut. Was aber, wenn ich ein Array mit wesentlich mehr Elementen definieren muß? Im aktuellen Fall sind es rd. 100 Elemente. Klar ich könnte für jedes Element eine Zeile VBA-Code tippen, daß ist aber langwierig und macht den Code nicht gerade übersichtlicher.
Ich hatte gehofft, daß es so geht:
DIM MeinArray(2) AS Single
MeinArray = (12.3, 18.1, 7.9)
Geht leider nicht, kommt eine Fehlermeldung, daß hinter dem ersten Wert eine schließende Klammer erwartet wird. Gibt es eine vergleichbar kurze Schreibweise, um viele Arrayelemente gleichzeitig zuzuweisen?
Danke!
Gruß, André
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA: Array definieren?!
23.09.2009 12:28:18
Rudi
Hallo,
dim meinArray
meinArray=Array(12.3, 18.1, 7.9)
Gruß
Rudi
Danke!
23.09.2009 12:32:02
André
Wow, das ging ja schnell. Danke euch dreien für die Antwort, genau so klappt es bestens.
Gruß, André
AW: VBA: viel Code - schnell erstellt
23.09.2009 18:24:54
Daniel
Hi
bei hundert und mehr Werten halte ich die kurzschreibweise auch nicht unbedingt für sinnvoll, denn wenn du da man einen wert gezielt korrigieren musst, ist das sehr Fehleranfällig.
um sich tipparbeit zu sparen, dann man solchen Code auch in Excel mit Hilfe von Formeln erstellen und das dann in den VBA-Edtior kopieren.
der Kode ist dann zwar lang, aber trotzdem schnell erstellt.
für dein beispiel würde das dann so aussehen:
Spalte A Text: "MeinArray("
Spalte B Formel: =Zeile()-1
Spalte C Text: ")="
Spalte D: deine Werte
Spalte A-C kopierst du soweit nach unten wie nötig, in spalte D trägst du die Werte ein, dann kopierst du das ganze aus der Exceltabelle nach VBA.
um jetzt den Hauptcode von solchen lagwierigen Definitionen zu befreiten, könnte man die Variablen auch global definieren (dh. direkt bei Option Explicit, so daß sie für alle Makros gültig sind) und dann die Wertzuweisung in ein anderes Marko auslagern, daß dann vom Hauptmakro nur noch aufgerufen wird.
Gruß, Daniel
Anzeige
Dim MeinArray As Variant und dann Array vor...
23.09.2009 12:28:38
Luc:-?
...den Klammerausdruck, André!
Gruß Luc :-?
AW: VBA: Array definieren?!
23.09.2009 12:29:30
Tino
Hallo,
versuche es mal so.
Dim MeinArray
MeinArray = Array(12.3, 18.1, 7.9)
Gruß Tino
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

VBA: Array definieren und initialisieren


Schritt-für-Schritt-Anleitung

Um ein Array in VBA zu definieren und zu initialisieren, kannst du folgende Schritte befolgen:

  1. Array deklarieren: Verwende das Schlüsselwort Dim, um ein Array zu deklarieren. Zum Beispiel:

    Dim MeinArray() As Single
  2. Array initialisieren: Um das Array mit Werten zu füllen, kannst du die Array-Funktion nutzen. Dies ist besonders nützlich, wenn du mehrere Werte gleichzeitig zuweisen möchtest:

    MeinArray = Array(12.3, 18.1, 7.9)
  3. Zugriff auf Array-Werte: Du kannst auf die Elemente des Arrays zugreifen, indem du den Index angibst:

    MsgBox MeinArray(0) ' Gibt 12.3 aus

Häufige Fehler und Lösungen

  • Fehler: "Typ nicht definiert": Stelle sicher, dass du das Array korrekt deklariert hast. Benutze Dim gefolgt von der Array-Dimensionierung wie oben beschrieben.

  • Fehler: "Subscript out of range": Dies tritt auf, wenn du versuchst, auf einen Index zuzugreifen, der außerhalb der definierten Grenzen liegt. Prüfe die Länge deines Arrays, bevor du auf einen Index zugreifst.


Alternative Methoden

Wenn du ein großes Array mit vielen Werten definieren möchtest, gibt es einige alternative Methoden:

  • Excel-Formeln verwenden: Du kannst die Werte in Excel eingeben und dann mit Formeln ein Array erstellen. Beispielweise:

    • In Spalte A den Text "MeinArray("
    • In Spalte B die Formel =ZEILE()-1
    • In Spalte C den Text ")="
    • In Spalte D die Werte, die du einfügen möchtest. Danach kannst du den gesamten Bereich kopieren und in den VBA-Editor einfügen.
  • Globale Variablen: Definiere deine Arrays als global, um sie in verschiedenen Makros zu nutzen. Dies kannst du direkt bei Option Explicit tun.


Praktische Beispiele

  1. Ein einfaches Array definieren:

    Dim Zahlen() As Integer
    Zahlen = Array(1, 2, 3, 4, 5)
  2. Ein mehrdimensionales Array erstellen:

    Dim Matrix(1 To 3, 1 To 3) As Integer
    Matrix(1, 1) = 1
    Matrix(1, 2) = 2
    Matrix(1, 3) = 3
  3. Ein String-Array definieren:

    Dim Farben() As String
    Farben = Array("Rot", "Grün", "Blau")

Tipps für Profis

  • Verwendung von Variant: Wenn die Art der Werte im Array variieren kann, solltest du Variant verwenden:

    Dim MeinArray As Variant
    MeinArray = Array(12.3, "Text", True)
  • Effiziente Dimensionierung: Nutze die ReDim-Anweisung, um die Größe eines Arrays zur Laufzeit anzupassen:

    ReDim MeinArray(0 To 99) As Single

FAQ: Häufige Fragen

1. Wie viele Elemente kann ein Array in VBA enthalten?
Die maximale Anzahl von Elementen in einem Array ist durch den verfügbaren Speicher und die maximale Integer-Größe in VBA begrenzt. In der Praxis ist dies oft sehr groß.

2. Was ist der Unterschied zwischen einem eindimensionalen und einem mehrdimensionalen Array?
Ein eindimensionales Array hat nur eine Dimension (z.B. eine Liste von Werten), während ein mehrdimensionales Array mehrere Dimensionen hat (z.B. eine Tabelle mit Zeilen und Spalten).

3. Kann ich Arrays in VBA auch in Access verwenden?
Ja, du kannst Arrays auch in Access VBA definieren und verwenden, indem du die gleichen Techniken anwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige