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

Forumthread: Auf Array zugreifen

Auf Array zugreifen
16.09.2008 11:52:00
Reinhard
Hallo Wissende,
ich hänge seit längerem an einer Stelle fest, ich lese einen Zellenbereich in eine Arrayvariable ein durch
B = Range("A1:A" & Anz)
sofern B überhaupt eine Arrayvariable ist, so langsam blicke ich überhaupt nicht mehr durch, hier ein Beispielcode:

Option Explicit
Sub test()
Dim B, Anz, Z
Anz = 1000
B = Range("A1:A" & Anz)
Range("D1:D" & Anz) = B  'klappt
For Z = 0 To Anz
MsgBox UBound(B)  'klappt, 1000 wird angezeigt
MsgBox B(Z)            'Laufzeitfehler 9, Index außerhalb
Next Z
End Sub


Auch Versuche mit
msgbox B(1,1)
msgbox B(0,0)
und was mir noch so einfiel brachten mich nicht weiter.
Wie lautet der Code damit ich mir B(1), B(2) usw. anschauen kann?
Danke ^ Gruß
Reinhard

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auf Array zugreifen
16.09.2008 11:59:00
Beverly
Hi Reinhard,
wenn ein Zellebereich direkt eingelesen wird, beginnt das Array nicht bei 0 sondern 1 und in diesem Fall musst du Option Base auf 1 setzen

Option Explicit
Option Base 1
Sub test()
Dim B, Anz, Z
Anz = 1000
B = Range("A1:A" & Anz)
Range("D1:D" & Anz) = B  'klappt
For Z = 1 To Anz
MsgBox B(Z, 1)
Next Z
End Sub




Anzeige
AW: Auf Array zugreifen
16.09.2008 13:22:36
Rudi
Hallo,
aus einem Range gefüllte Arrays sind immer 2-dimensional. Beide Dimensionen beginnen bei 1.
Array(AnzahlZeilen,AnzahlSpalten). In deinem Fall also B(1 -1000, 1-1).
Die Schleife muss also
For Z=1 to Anz
heißen.
Warum B(1,1) nicht klappt ist mir schleierhaft.
Tipp: Blende dir das Lokalfenster ein (Ansicht-Lokalfenster) und gehe den Code mit F8 durch. Dann kannst du dir wunderbar deine Variableninhalte anschauen.
Gruß
Rudi
Anzeige
Rückmeldung
18.09.2008 21:08:28
Reinhard
Danke an euch beide,
klappt beides, warum bei mir vorher B(1,1) nicht ging ist mir schleierhaft.
Gruß
Reinhard
;
Anzeige

Infobox / Tutorial

Auf Array zugreifen in Excel VBA


Schritt-für-Schritt-Anleitung

Um auf ein Array in Excel VBA zuzugreifen, insbesondere wenn du einen Zellenbereich in ein Array einliest, kannst du die folgenden Schritte befolgen:

  1. Variablen deklarieren: Erstelle die benötigten Variablen.

    Dim B, Anz, Z
  2. Anzahl der Zeilen festlegen: Setze die Variable Anz, die die Anzahl der Zeilen im Zellenbereich darstellt.

    Anz = 1000
  3. Zellenbereich einlesen: Lese den Zellenbereich in das Array ein.

    B = Range("A1:A" & Anz)
  4. Zelleninhalt ausgeben: Verwende eine For-Schleife, um die Werte im Array zu durchlaufen und auszugeben. Achte darauf, dass die Schleife bei 1 beginnt.

    For Z = 1 To Anz
       MsgBox B(Z, 1)  ' Gibt den Wert der Zelle aus
    Next Z
  5. Option Base setzen: Stelle sicher, dass Option Base auf 1 gesetzt ist, um den Index des Arrays korrekt zu starten.


Häufige Fehler und Lösungen

  • Laufzeitfehler 9: Wenn du B(Z) verwendest, während Z bei 0 beginnt, tritt ein Laufzeitfehler auf. Stelle sicher, dass die Schleife bei 1 startet.

  • Zugriff auf B(1,1): Wenn du versuchst, auf B(1, 1) zuzugreifen, beachte, dass Arrays, die aus einem Zellenbereich gefüllt werden, immer 2-dimensional sind. Daher sollte der Zugriff auf B(Z, 1) erfolgen.


Alternative Methoden

Eine alternative Methode, um auf Arrays in Excel VBA zuzugreifen, ist die Verwendung von ArrayList oder Dictionary, die flexiblere Strukturen bieten. Diese können insbesondere nützlich sein, wenn du dynamische Daten verarbeiten möchtest.

Hier ein einfaches Beispiel mit ArrayList:

Dim arrList As Object
Set arrList = CreateObject("System.Collections.ArrayList")
arrList.Add Range("A1:A1000").Value

Praktische Beispiele

Hier sind einige Beispiele, die dir helfen, das Konzept des Zugriffs auf Arrays in Excel zu verstehen:

  1. Einfaches Array:

    Dim myArray(1 To 5) As Integer
    For i = 1 To 5
       myArray(i) = i * 10
       MsgBox myArray(i)
    Next i
  2. Zelleninhalt kopieren:

    Dim B, Anz, Z
    Anz = 5
    B = Range("A1:A" & Anz)
    For Z = 1 To Anz
       Range("B" & Z).Value = B(Z, 1)
    Next Z

Tipps für Profis

  • Lokalfenster verwenden: Blende das Lokalfenster in der VBA-Entwicklungsumgebung ein (Ansicht -> Lokalfenster), um die Werte deiner Variablen während der Ausführung zu beobachten.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Laufzeitfehler elegant zu handhaben.

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0

FAQ: Häufige Fragen

1. Warum beginnt das Array bei 1? Arrays, die aus einem Zellenbereich eingelesen werden, beginnen standardmäßig bei 1. Um dies zu ändern, musst du Option Base verwenden.

2. Wie kann ich auf ein 2-dimensionales Array zugreifen? Um auf ein 2-dimensionales Array zuzugreifen, verwende den Syntax B(Z, Spalte), wobei Z der Zeilenindex und Spalte die Spalte ist, auf die du zugreifen möchtest.

3. Gibt es eine Möglichkeit, die Anzahl der Elemente im Array zu bestimmen? Ja, du kannst UBound(B) verwenden, um die obere Grenze des Arrays zu ermitteln.

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