Laufzeitfehler ‚6‘

Dies ist ein Laufzeitfehler, der auftritt, wenn Sie eine Zahl für die Variabel angeben, die außerhalb des Zahlenbereichs liegt, den dieser Datentyp annehmen kann. Um den Code effizient zu debuggen, ist es wichtig, zuerst den Fehler Ihres VBA-Codes zu verstehen. In diesem Artikel behandeln wir die möglichen Gründe für das Auftreten dieses Fehlers und wie der Fehler behoben werden kann.

Dies sind die drei möglichen Ursachen des Fehlers:

  • Versuchen Sie, eine Zahl in einer Berechnung zu verwenden, und diese Zahl wird in eine ganze Zahl umgewandelt, aber das Ergebnis ist größer als eine ganze Zahl.
  • Eine Zuweisung zu einer Eigenschaft übersteigt den Höchstwert, den die Eigenschaft annehmen kann.
  • Das Ergebnis einer Zuweisung, Berechnung oder Datentypkonvertierung ist zu groß.

Wir werden uns mögliche Ursachen dieses Fehlers ansehen und eine Lösung anbieten.

Was verursacht den Fehler?

Bevor Sie mit der Behebung des Fehlers fortfahren, müssen Sie die Fehlerursache in Ihrem VBA-Code identifizieren. Die Codezeile, die den Fehler verursacht, wird gelb hervorgehoben, sobald die Debug-Schaltfläche gedrückt wird.

Ursache 1: Ergebnis einer Berechnung ist zu gross

Beispielfehlercode:

Sub myMacro ()
    Dim x As Long     
    x = 8400 * 365   ' Error: Overflow 
End Sub

Das Ergebnis von x im obigen Code ist 3’066’000, das ein ganzzahliger Datentyp ist, der Werte im Bereich von -32’768 bis 32’767 annehmen kann. Da 3’066’000 außerhalb dieses Bereichs liegt, erhalten Sie den Überlauf-Laufzeitfehler „6“.

Lösung:

Um den Fehler zu beheben, verwenden Sie die VBA-CLng-Funktion, um den ganzzahligen Datentyp in einen langen Datentyp zu konvertieren.

Hinweis: „CLng“ steht für „Convert to Long“. Diese Funktion konvertiert den anderen Datentyp in einen langen Datentyp, der die Werte von -2.147.483.648 bis 2.147.483.648 aufnehmen kann.

Code:


Sub myMacro()
    Dim x As Long
    x = CLng(8400) * 365  ‘ Error: Overflow
End Sub

Ursache 2: Dividieren durch Null

Während der folgende Code einfach eine Zahl durch die andere dividiert, gibt es einige Fälle, in denen dies nicht möglich ist. Wenn beispielsweise Zelle A1 = 2 und Zelle A2 = 0 ist, ist es nicht möglich, durch Null zu dividieren. Das Laufzeitfehlerfeld enthält eine Debug-Schaltfläche, die den Problemcode hervorhebt.

Beispielfehlercode:

Sub myMacro()
Dim Zaehler, Nenner As Long
    Zaehler = Range("A1")
    Nenner = Range("B1")    
    MsgBox Zaehler / Nenner    
End Sub

Dieser Fehler kann mit einem Error-Handler abgefangen werden, indem geprüft wird ob der Nenner Null ist.

Ursache 3: Falscher Datentyp

Angenommen, Sie verwenden den Datentyp Integer, der Werte zwischen -32.768 und 32.767 annehmen kann. Wenn Sie also einen Wert angeben, der außerhalb dieses Bereichs liegt, erhalten Sie den Laufzeitfehler Overflow.

Beispielfehlercode:

Sub myMacro()
Dim Zahl As Integer   
    Zahl = 100000   
End Sub

Lösung

Wenn Sie den Datentyp auf bspw. Single ändern, dann kann die Variabel grössere Zahlen speichern und der Überlauf-Fehler tritt nicht mehr auf.

Code:

Sub myMacro()

Dim Zahl As Single    
    Zahl = 100000   
End Sub

Nachfolgend finden Sie eine Übersicht der Datentypen. Der Überlauf findet dann statt, wenn der zugewiesene Wert nicht mehr im Wertebereich liegt.

DatentypSpeicherbedarfWertebereich
Byte1 Byte0 bis 255
Boolean2 BytesTrue oder False
Integer2 Bytes-32.768 bis 32.767
Long4 Bytes-2.147.483.648 bis 2.147.483.647
Single4 Bytes-3,402823E38 bis -1,401298E-45 und 1,401298E-45 bis 3,402823E38
Double8 Bytes-1,79769313486231E308 bis
-4,94065645841247E-324 und 4,94065645841247E-324 bis 1,79769313486232E308
Currency8 Bytes-922.337.203.685.477,5808 bis 922.337.203.685.477,5807
Decimal16 Bytes+/-79.228.162.514.264.337.593.543.950.335 ohne Dezimalzeichen;
+/-7,9228162514264337593543950335 mit 28 Nachkommastellen
Date8 BytesJanuar 100 bis 31. Dezember 9999
Object4 BytesVerweis auf Object
String>10 Bytesbis 2 Mrd.
Variant>16 Bytes

Benötigen Sie einen VBA Programmierer?

Wir als exact construct programmieren mit einem Team von rd. 20 Mitarbeitern seit über 10 Jahren Excel-Tools. Wir sind ein Nischenanbieter der spezialisiert auf Makros/VBA-Codes ist. Daneben unterstützen wir auch als 3rd Level Support die IT-Abteilungen rund um Probleme bei MS Office (Excel, Word, PowerPoint, etc.).

Haben Sie ein Excel-Problem? Benötigen Sie einen Makro-Programmierer? Rufen Sie uns unverbindlich an +41 52 511 05 25 oder kontaktieren Sie uns via Kontaktformular.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.