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

Forumthread: Excel-VBA Laufzeitfehler 9

Excel-VBA Laufzeitfehler 9
26.08.2006 00:11:44
James
Hallo zusammen,
ich habe eine Frage zu einem Excel-VBA-Problem, dass ich leider nicht verstehe.
Wenn ich mir aus dem Internet von einer durchaus seriösen Quelle die unten angegebene Excel-Datei runterlade und diese mit
den Original-Daten ausführe, erhalte ich die Fehlermeldung "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs".
Ich kann mir das Problem nicht erklären, erhalte aber auch die Fehlermeldung, wenn ich eigene Daten einfüge, jeweils zur
letzten Zelle (meine Daten umfassen 1579 Zeilen und eine Spalte).
Kann jemand mit dem Problem etwas anfangen? Für mich sind die VBA-Befehle nur Böhmische Dörfer!
Ich verwende Excel 2003.
Vielen Dank für die Hilfe schon im Voraus.
www.aicpa.org/download/pubs/jofa/2003_08/Fraud_Buster.xls | Arbeitsblatt "Enter data"
(AICPA ist das Institut der Amerikanischen Wirtschaftsprüfer, JOFA heißt Journal of Accounting o.ä. und ist eine Fachzeitschrift)
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Excel-VBA Laufzeitfehler 9
26.08.2006 00:30:09
Stefan
Hallo James,
Ich hab die Datei mit einer US Excel Version geoeffnet, und das Makro funktioniert ohne Fehler. Du solltest versuchen die Datei zu debuggen. Das machst Du indem Du Alt+F11 drueckst, in dem neuen Fenster das dann aufgeht in der linken Spalte auf "Module" klickst, und darin dann auf "Modul1" oder "Module1", je nachdem wie das bei Dir heisst. Dann oeffnet sich auf der rechten Seite das Makro. Klick irgendwo in dieses Makro (es hat die Ueberschrift "Sub Benford()", und klick F8. Mit jedem Klick auf F8 wird Excel einen weiteren Schritt des Makros ausfuehren. Mach das solange, bis die Fehlermeldung kommt. Wenn Du dann weisst, an welcher Stelle des Programmes der Fehler auftritt, koennen jede Menge Leute hier im Forum weiterhelfen.
Schoene Gruesse
Stefan
Anzeige
AW: Excel-VBA Laufzeitfehler 9
26.08.2006 07:00:37
Erich
Hallo James,
das Makro Benford ist nicht wirklich optimal - es prüft nicht die max. Länge der Quellwerte.
In Zelle A43 steht - im Unterschied zu den anderen Zellen - ein Wert, der länger als neun Stellen ist, nämlich 176,379210220674
Bei der 10. Stelle steigt das Makro aus, weil die Arrays nur für 9 Stellen angelegt sind.
Wenn du in A43 etwa 176,38 schreibst, läuft Benford durch.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Excel-VBA Laufzeitfehler 9
26.08.2006 15:18:25
B.
Hallo Erich,
Vielen Dank für die Antwort. Es ist tatsächlich so wie Du sagst, nach dem löschen des letzten Wertes funktioniert das Makro.
Wenn ich nun allerdings meine Test-Werte einfügen (siehe https://www.herber.de/bbs/user/36178.txt , 1590 Zahlen), sagt mir Excel wieder, dass Laufzeitfehler 9 vorliegt. Die letzte Zahl ist 668,00. Lösche ich diese Zahl, stört ihn der "nächste" letzte Wert.
Wenn ich auf Debuggen gehe, liegt der Fehler angeblich hier:
For Digits = 1 To Len(Cells(Colcells, Step))
Select Case Mid(Cells(Colcells, Step), Digits, 1)
Case 1
Arrayone(Digits) = Arrayone(Digits) + 1
Wie gesagt, den Code verstehe ich generell nicht, daher kann ich mir das auch nicht erklären.
Vielen Dank für die Hilfe schon im Vorraus!
Anzeige
AW: Excel-VBA Laufzeitfehler 9
27.08.2006 09:11:07
Erich
Hallo James,
in der von dir geposteten Textdatei kommt auch die Zahl 2020833,41 vor. Sie hat (mit Komma) 10 Stellen.
Das Makro funzt aber nur bei bis zu 9 Stellen.
Da ohnehin nur die ersten beiden Stellen relevant sind, kannst du hinten die 1 löschen.
Dann sollte es durchlaufen.
Wie gesagt - das Makro ist nicht wirklich optimal...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA Laufzeitfehler 9: Lösungen und Tipps


Schritt-für-Schritt-Anleitung

  1. Makro öffnen: Drücke Alt + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Module finden: Suche in der linken Spalte nach "Module" und klicke darauf.
  3. Makro auswählen: Klicke auf das entsprechende Modul, in dem dein Makro gespeichert ist (z. B. "Modul1").
  4. Debugging starten: Klicke auf die Überschrift deines Makros, z. B. Sub Benford(), und drücke F8, um schrittweise durch das Makro zu gehen. Achte darauf, an welcher Stelle der Laufzeitfehler 9 auftritt.

Häufige Fehler und Lösungen

  • Laufzeitfehler 9: Index außerhalb des gültigen Bereichs: Dieser Fehler tritt häufig auf, wenn versucht wird, auf ein Element zuzugreifen, das nicht existiert. Überprüfe, ob deine Daten in den richtigen Zellen stehen und keine leeren Zellen im Bereich sind, den das Makro verwendet.

  • Falsche Datenlänge: Wenn du längere Werte hast, als im Makro vorgesehen (z. B. mehr als 9 Stellen), wird ebenfalls der Fehler ausgelöst. Reduziere die Länge der Werte in den Zellen oder passe das Makro entsprechend an.

  • Leere Zellen: Achte darauf, dass keine leeren Zellen in dem Bereich sind, den das Makro verarbeitet. Dies kann auch zu einem Excel VBA Laufzeitfehler 9 führen.


Alternative Methoden

  • Fehlerbehandlung im VBA-Code: Du kannst den Code so anpassen, dass er mit Fehlern besser umgeht. Füge zum Beispiel On Error Resume Next hinzu, um den Code fortfahren zu lassen, selbst wenn ein Fehler auftritt. Allerdings solltest du dies mit Vorsicht verwenden, um nicht wichtige Fehler zu ignorieren.

  • Verwendung von If-Abfragen: Bevor du auf Zellen zugreifst, prüfe, ob sie existieren oder gültige Werte enthalten. Zum Beispiel:

    If Not IsEmpty(Cells(Colcells, Step)) Then
      ' Dein Code hier
    End If

Praktische Beispiele

Ein Beispiel für eine Fehlerbehebung könnte so aussehen:

Dim Digits As Integer
Dim Value As String

Value = Cells(Colcells, Step).Value

If Len(Value) <= 9 Then
    For Digits = 1 To Len(Value)
        Select Case Mid(Value, Digits, 1)
            Case 1
                Arrayone(Digits) = Arrayone(Digits) + 1
        End Select
    Next Digits
Else
    MsgBox "Wert zu lang: " & Value
End If

Mit diesem Code stellst du sicher, dass der Wert nicht länger als 9 Stellen ist und verhinderst den laufzeitfehler 9.


Tipps für Profis

  • Verwende Option Explicit: Setze dies ganz oben in deinem Modul, um sicherzustellen, dass alle Variablen deklariert werden müssen. Dies hilft, viele Fehler frühzeitig zu erkennen.

  • Modularisiere deinen Code: Teile komplexe Makros in kleinere, wiederverwendbare Funktionen auf. Dies erleichtert das Debuggen und die Wartung.

  • Dokumentiere deinen Code: Kommentiere wichtige Abschnitte deines Codes, um die Nachvollziehbarkeit zu erhöhen, besonders wenn du nicht der einzige Benutzer bist.


FAQ: Häufige Fragen

1. Was bedeutet "Laufzeitfehler 9"?
Der Laufzeitfehler 9 tritt auf, wenn ein Makro versucht, auf einen Index zuzugreifen, der außerhalb des gültigen Bereichs liegt. Dies kann durch falsche Zellreferenzen oder leere Zellen verursacht werden.

2. Wie kann ich den Fehler im Makro beheben?
Überprüfe deine Daten auf korrekte Formate und Längen. Stelle sicher, dass alle Zellen, die das Makro verwendet, gültige Werte enthalten.

3. Funktioniert das Tutorial in neueren Excel-Versionen?
Die beschriebenen Methoden und Lösungen sind allgemein anwendbar, jedoch kann die Handhabung in neueren Excel-Versionen variieren. Stelle sicher, dass du die Version, die du verwendest, entsprechend anpasst.

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