Zum Inhalt springen

VBA: Index außerhalb des gültigen Bereichs


Empfohlene Beiträge

Geschrieben

Laufzeitfehler 9:

Index außerhalb des gültigen Bereichs

Hallo Leute,

ich weiß normalerweise, was zu tun ist, wenn dieser Fehler auftritt. Meistens habe ich dann ein Array falsch dimensioniert oder versuche auf Dimensionen des Arrays zuzugreifen, die gar nicht existieren. Nur diesmal ist es anders. Eigentlich funktioniert folgende Funktion:

Function Daten_einlesen()


    Dim Zeile As Integer

    Dim datenfeld()

    Dim wert As Variant

    Dim AnzahlDatensaetze As Integer


    Zeile = 6 ' unsere Startzeile im Arbeitsblatt Telefonverhalten

    AnzahlDatensaetze = Rechnungsimport.Gib_Zeile_zurück - Zeile + 1 ' = Anzahl Datensätze minus 1

    ReDim datenfeld(AnzahlDatensaetze, 7)


    Worksheets("Telefonverhalten").Activate

    wert = Range("A" & Zeile).Value ' für die erste Bedingunsprüfung in der Do While ...-Schleife


    Do While Not wert = ""

        ' Zeile-6 weil wir das Array bei 0 starten lassen

        datenfeld(Zeile - 6, 0) = Range("A" & Zeile).Value ' Wochentag

        datenfeld(Zeile - 6, 1) = Range("B" & Zeile).Value ' Datum

        datenfeld(Zeile - 6, 2) = Range("C" & Zeile).Value ' Uhrzeit

        datenfeld(Zeile - 6, 3) = Range("D" & Zeile).Value ' Telefonnummer

        datenfeld(Zeile - 6, 4) = Range("E" & Zeile).Value ' Netzinfo

        datenfeld(Zeile - 6, 5) = Range("F" & Zeile).Value ' Gesprächsdauer

        datenfeld(Zeile - 6, 6) = Range("G" & Zeile).Value ' Gesprächsdauer gerundet

        datenfeld(Zeile - 6, 7) = Range("H" & Zeile).Value ' Einheit


        Zeile = Zeile + 1

        ' wert ist der Parameter für die Abbruchbedingung

        wert = Range("A" & Zeile).Value

    Loop


    Daten_einlesen = datenfeld 'Daten_einlesen: Array als Rückgabewert


End Function

Die Funktion gibt mir halt Daten einer Excel-Tabelle als Array zurück.

Das Komische ist, dass sie bei jedem zweiten aufruf aus einer anderen Funktion die oben genannte Fehlermeldung bringt. Ruft man die funktion für sich allein auf, kommt nie eine Fehlermeldung.

Bin etwas perplex und weiß auch nicht genau, wie ich das genauer beschreiben kann. Kennt jemand das Problem, dass ein Fehler ohne Änderung des Quelltextes einmal auftritt und einmal nich (immer abwechselnd).

Danke

Geschrieben
ReDim datenfeld(AnzahlDatensaetze, 7)

...

datenfeld(Zeile - 6, 7) = Range("H" & Zeile).Value ' Einheit

Spontan und ohne gross drauf zu schauen würde ich sagen, es liegt daran das du "datrenfeld" mit AnzahlDatensaetze, 7 definierst, aber bis index 7 gehst (welches das 8. ist)

Geschrieben
Spontan und ohne gross drauf zu schauen würde ich sagen, es liegt daran das du "datrenfeld" mit AnzahlDatensaetze, 7 definierst, aber bis index 7 gehst (welches das 8. ist)

Grundsätzlich stimmt das. Komisch, dass es trotzdem geht. Es geht auch nicht anders. Der fängt wohl auch bei Dimension 0 an. Trotzdem dank.

War ein ganz anderer Fehler, den ich gemacht habe. Es lag daran, dass ich noch das richtige Worksheet aktivieren musste. Und durch einen Zufall war das Worksheet jedes zweite mal nicht aktiv.:floet:

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...