haarig Geschrieben 7. Dezember 2005 Geschrieben 7. Dezember 2005 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 Zitieren
3qualizer Geschrieben 7. Dezember 2005 Geschrieben 7. Dezember 2005 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) Zitieren
haarig Geschrieben 8. Dezember 2005 Autor Geschrieben 8. Dezember 2005 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: Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.