Laufzeitfehler 6 Excel

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:

  • Sie versuchen eine Zahl in einer Berechnung zu verwenden, diese Zahl wird als Datentyp Integer interpretiert und das Ergebnis ist größer als 32’767.
  • Eine Zuweisung zu einer Eigenschaft übersteigt den Höchstwert, den die Eigenschaft annehmen kann.
  • Das Ergebnis einer Zuweisung, Berechnung oder Datentypkonvertierung ist zu groß.

Nachfolgend werden wir uns mögliche Ursachen dieses Fehlers ansehen und Lösungen aufzeigen.

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

Im obigen Code versuchen Sie, eine Zahl in einer Berechnung zu verwenden, und diese Zahl wird in den Datentyp Integer umgewandelt, aber das Ergebnis ist größer als 32’767, was zu einem Überlauf-Laufzeitfehler führt.

Lösung:

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

Hinweis: „CLng“ steht für „Convert to Long“. Diese Funktion konvertiert den anderen Datentyp in den Datentyp Long, 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
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.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen