...
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 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ß.

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 eine ganze Zahl umgewandelt, aber das Ergebnis ist größer als eine ganze Zahl, was zu einem Überlauf-Laufzeitfehler führt.

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
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.

Datentyp Speicherbedarf Wertebereich
Byte 1 Byte 0 bis 255
Boolean 2 Bytes True oder False
Integer 2 Bytes -32.768 bis 32.767
Long 4 Bytes -2.147.483.648 bis 2.147.483.647
Single 4 Bytes -3,402823E38 bis -1,401298E-45 und 1,401298E-45 bis 3,402823E38
Double 8 Bytes -1,79769313486231E308 bis
-4,94065645841247E-324 und 4,94065645841247E-324 bis 1,79769313486232E308
Currency 8 Bytes -922.337.203.685.477,5808 bis 922.337.203.685.477,5807
Decimal 16 Bytes +/-79.228.162.514.264.337.593.543.950.335 ohne Dezimalzeichen;
+/-7,9228162514264337593543950335 mit 28 Nachkommastellen
Date 8 Bytes Januar 100 bis 31. Dezember 9999
Object 4 Bytes Verweis auf Object
String >10 Bytes bis 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
Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.