Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Array füllen

Array füllen
09.12.2002 15:47:04
Frank
Hallo,
ich möchte ein Array mit Werten aus einem Worksheet füllen. Bisher hab ich diesen Code geschrieben, der leider nicht funktioniert. Kann mir jemand weiter helfen?


Dim wksSplErst As Worksheet
Dim aNamen() As Variant
Dim iAnzTip, iRow, iCol as Integer

Set wksSplErst = Worksheets("Spielplan_Erstellen")

iAnzTip = wksSplErst.Cells(3, 3)'gibt einen Integerwert zwischen 1 und 61 aus
iRow = 5
iCol = 3
For i = 0 To iAnzTip
aNamen(i) = Array(wksSplErst.Cells(iRow, iCol))
iRow = iRow + 1
Next i

Gruß Frank

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Array füllen
09.12.2002 15:50:58
Bernd
Vielleicht hilft das weiter...

Gruß
Bernd

Sub test2()
'wenn der Datenbereich klar definiert ist, dann nimm z.B.
Dim arr(7) As String 'Oder was auch immer der Inhalt wird
Dim intAkt As Integer

'einlesen der Zellen, hier A1 bis A7
For intAkt = 1 To 7
arr(intAkt) = Cells(intAkt, 1).Value
Next intAkt

'Hier schreiben wir die Zellen irgendwoanders hin
' oder werten die Inhalte aus.
For i = 0 To 7
Cells(i + 5, 5) = arr(i)

If arr(i) = "Mo" Then
MsgBox ("Monday, Monday.... :-)")
End If

Next

'Der Befehl UBound() liefert u.a. die Grösse eines Arrays.

'Bei unbekannter Grösse der Tabelle

'Dim arr() As Variant

'ReDim arr(NeueGrösse)


End Sub

Anzeige
Re: Array füllen
09.12.2002 15:57:14
andre
hallo frank,
das redim kann z.B. am anfang der schleife stehen, und dort setzt du die grösse mit dem schleifenzähler hoch.
for i=1 to x
redim(i-1)'siehe array - feld 0
...
next
Re: Array füllen
09.12.2002 16:02:12
Frank
Danke,
da werde ich mich gleich mal ranmachen.
Hat funktioniert :)
09.12.2002 16:14:34
Frank
:)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Array füllen in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Array in Excel VBA zu füllen, gehst du wie folgt vor:

  1. Definiere das Array: Zuerst musst du das Array definieren. Dabei kannst du entweder eine feste Größe angeben oder das Array dynamisch erstellen.

    Dim arr() As Variant
  2. Größe des Arrays setzen: Wenn du die Größe des Arrays nicht im Voraus kennst, kannst du ReDim verwenden.

    ReDim arr(1 To 7)
  3. Werte aus dem Worksheet einlesen: Nutze eine Schleife, um die Werte aus den Zellen einzulesen.

    Dim i As Integer
    For i = 1 To 7
       arr(i) = Cells(i, 1).Value
    Next i
  4. Werte im Array nutzen: Jetzt kannst du die Werte des Arrays weiterverarbeiten, z.B. in andere Zellen schreiben oder Bedingungen überprüfen.

    For i = 1 To 7
       Cells(i + 5, 5).Value = arr(i)
       If arr(i) = "Mo" Then
           MsgBox "Monday, Monday....    :-)"
       End If
    Next i

Häufige Fehler und Lösungen

  • Fehler: "Subscript out of range"

    • Lösung: Stelle sicher, dass du die Indizes korrekt definierst und das Array die richtige Größe hat.
  • Fehler: "Type mismatch"

    • Lösung: Überprüfe, ob die Zellen, aus denen du Werte einliest, tatsächlich die erwarteten Datentypen enthalten.
  • Unzureichende Dimensionierung des Arrays: Wenn du die Größe des Arrays nicht korrekt angibst, kann es zu Laufzeitfehlern kommen.

    • Lösung: Verwende ReDim am Anfang der Schleife, um die Größe dynamisch anzupassen.

Alternative Methoden

Wenn du ein Array in Excel VBA füllen möchtest, gibt es auch alternative Methoden:

  1. Direktes Befüllen mit einer Array-Notation:

    Dim arr As Variant
    arr = Array("Wert1", "Wert2", "Wert3")
  2. Verwendung von Range.Value zur Befüllung:

    Du kannst ein Array direkt mit Werten aus einem Zellbereich füllen:

    Dim arr As Variant
    arr = Worksheets("Tabelle1").Range("A1:A7").Value

Praktische Beispiele

Hier sind einige praktische Beispiele für das Füllen von Arrays in Excel VBA:

  1. Eindimensionales Array füllen:

    Sub FillArray()
       Dim arr() As Variant
       Dim i As Integer
       ReDim arr(1 To 5)
       For i = 1 To 5
           arr(i) = "Wert " & i
       Next i
    End Sub
  2. Zweidimensionales Array füllen:

    Sub Fill2DArray()
       Dim arr(1 To 3, 1 To 2) As String
       arr(1, 1) = "A"
       arr(1, 2) = "B"
       arr(2, 1) = "C"
       arr(2, 2) = "D"
       arr(3, 1) = "E"
       arr(3, 2) = "F"
    End Sub

Tipps für Profis

  • Array-Performance verbessern: Arbeite mit Arrays, anstatt direkt auf Zellen zuzugreifen, um die Performance zu steigern.
  • Dynamische Arrays nutzen: Verwende ReDim Preserve, um die Werte in einem bereits gefüllten Array zu bewahren, während du die Größe änderst.
  • Fehlerbehandlung: Implementiere On Error Resume Next, um Laufzeitfehler zu verhindern, während du mit Arrays arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich ein Array in Excel VBA aus einer Tabelle füllen? Du kannst ein Array mit Werten aus einer Tabelle füllen, indem du die Range.Value-Eigenschaft verwendest, z.B.:

arr = Worksheets("DeinSheet").Range("A1:A10").Value

2. Was ist der Unterschied zwischen eindimensionalen und mehrdimensionalen Arrays? Eindimensionale Arrays haben eine einzige Dimension (z.B. arr(1 To 5)), während mehrdimensionale Arrays mehrere Dimensionen haben (z.B. arr(1 To 5, 1 To 3)).

3. Wie kann ich die Größe eines vba-Arrays nachträglich ändern? Verwende ReDim, um die Größe des Arrays zu ändern. Um die Werte beizubehalten, nutze ReDim Preserve, z.B.:

ReDim Preserve arr(1 To 10)

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige