Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Laufzeitfehler 6 Überlauf

Laufzeitfehler 6 Überlauf
Andi
Hallo Zusammen,
mit der Funktion EFZVUIS habe ich noch nie Probleme gehabt.
Doch ein Rechner streikt (Windows XP, Excel 2007)
Die Anweisung ".rows.count" läuft nicht. Fehlermeldung Laufzeitfehler '6' Überlauf.
Woran könnte es liegen? Welche dll bzw. Bibliothek muß installiert /registriert sein?
Im Net fand ich nur Hinweise bzgl. falscher Deklaration integer / long.
Da die Funktion, auf allen anderen Rechner mit Excel 2003, 2007, 2010 stabil läuft,
muß es an etwas anderen liegen.
Danke für Eure Hilfe.
Gruß Andi
Public Function EFZVUIS(ByVal DasTabBlatt As Worksheet, ByVal DieSpalte As Integer) As Long
'Weiterverwendung auf eingene Gefahr
'Keine Zeilen ausgeblendet
' *** Erste Freie Zeile von unten in einer Spalte ***
'Gibt die erste Freie Zeile von unten zurück.
'ist die Letzte Zelle belegt so wird - 1 zurückgegeben bei einem Fehler -2
Dim i As Long
On Error GoTo Fehler
With DasTabBlatt
If IsEmpty(.Cells(.Rows.Count, DieSpalte)) Then
i = .Cells(.Rows.Count, DieSpalte).End(xlUp).Row
If i = 1 Then
EFZVUIS = IIf(IsEmpty(.Cells(i, DieSpalte)), 1, 2)
Else
EFZVUIS = i + 1
End If
Else
EFZVUIS = -1
End If
End With
Exit Function
Fehler:
EFZVUIS = -2
End Function

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Laufzeitfehler 6 Überlauf
05.07.2011 14:03:21
Nepumuk
Hallo,
Count ist als Long deklariert, aber die Anzahl der Zeilen beträgt 1.048.576 alos außerhalb von Long. Microsoft hat eine neue Eigenschaft eingefügt "CountLarge". Diese musst du in 2007 benutzen. Aber Achtung, dann funktioniert das in 2003 und darunter natürlich nicht mehr. Es gibt eine Lösung dir ich dir bei Bedarf geben kann.
Gruß
Nepumuk
Anzeige
AW: Laufzeitfehler 6 Überlauf
05.07.2011 14:31:58
Heiko
Hallo Nepumuk,
ich wage ja kaum zu wiedersprechen, aber bei mir (EXCEL 2007) ist der Datentyp Long folgendermaßen definiert:
Variablen vom Datentyp Long (lange Ganzzahl) werden als 32-Bit-Zahlen (4 Bytes) mit Vorzeichen im Bereich von -2.147.483.648 bis 2.147.483.647 gespeichert.
Sollte also reichen für 1.048.576 Zeilen, oder?
Und bei mir läuft die Funktion auch mit .count so wie sie Andi eingestellt hat, auch wenn bis Zeile 1048575 gefüllt ist.
Ich glaube ja eher das der Datentyp Long für i in der Originalfunktion von Andi noch auf Integer steht, und nun zum erstmal einer seiner Anwender wirklich mehr als 65536 Zeilen nutzt.
Aber das ist eine reine Vermutung, zumindest in der Form wie gepostet läuft das bei mir.
Gruß Heiko
Anzeige
Korrektur
05.07.2011 14:39:50
Heiko
Ich meinte natürlich:
Ich glaube ja eher das der Datentyp Long für i in der Originalfunktion von Andi noch auf Integer steht, und nun zum erstmal einer seiner Anwender wirklich mehr als 32767 Zeilen nutzt.
Gruß Heiko
@ Heiko
05.07.2011 15:32:22
Andi
Die Variable ist definitiv als long deklariert, daran kann es nicht liegen.
Anzeige
@ Nepumuk
05.07.2011 15:25:21
Andi
Die Fehlermeldung erscheint nur an einem Rechner mit Excel 2007.
An anderen Rechner mit Excel 2003, 2007 oder 2010 wird keine Fehlermeldung erzeugt.
VBA Code läuft fehlerfrei (Option Explizit).
Die Datei ist mit Excel 2007 erzeugt und als Excelformat 2003 gespeichert.
Die Excelsoftware 2007 wurde 2 x neu installiert.
Kurioserweise funktionierte mit Excel 2003 diese einfache Funktion EFZVUIS auf dem Rechner noch nie.
Das habe ich zwischenzeitlich herausgefunden, da ich mit dem Betroffenen unterhalten habe.
Ich denke, es handelt sich hier um einen fundamentalen Fehler.
Die Fehlermeldung Überlauf muß nicht der Fehler Überlauf sein, sondern kann ein anderer sein.
Nur was?
Anzeige
On Error Resume Next und VBA Optionen
05.07.2011 16:15:00
Tino
Hallo,
Du verwendest On Error Resume Next,
ich vermute in den VBA Optionen wo der Fehler Auftritt im Register Allgemein ist bei
Unterbrechen bei Fehler die Option Bei jedem Fehler aktiviert.
Vorschlag,
zuerst würde ich versuchen den Code so aufzubauen das er fehlerfrei durchläuft, dass heißt die Variablen richtig deklarieren und sonstige Fehlermöglichkeiten abfangen oder vermeiden.
Dann kannst Du das Projekt schützen, dann sollte der Fehler auch nicht mehr auftreten.
Zum Schluss kannst Du an dem Rechner noch die Option Bei nicht verarbeiteten Fehlern aktivieren.
Gruß Tino
Anzeige
meinte Fehlerbehandlung oT.
05.07.2011 16:16:09
Tino
@ Tino
05.07.2011 17:01:58
Andi
Ja, Danke für den Hinweis.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 6: Überlauf in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler 6 Überlauf in Excel VBA zu beheben, kannst Du folgende Schritte befolgen:

  1. Überprüfe die Datentypen: Stelle sicher, dass alle Variablen, die große Zahlen speichern sollen, als Long deklariert sind. In vielen Fällen könnte der Fehler durch eine fälschliche Deklaration als Integer entstehen, das nur bis 32.767 zählt.

    Dim i As Long
  2. Verwende CountLarge: Wenn Du mit Excel 2007 oder höher arbeitest, nutze die CountLarge-Eigenschaft, um die Gesamtanzahl der Zeilen korrekt zu erfassen.

    i = DasTabBlatt.Rows.CountLarge
  3. Fehlerbehandlung implementieren: Nutze die On Error-Anweisung, um sicherzustellen, dass Dein Code weiterhin funktioniert, auch wenn ein Fehler auftritt.

    On Error GoTo Fehler
  4. Optionen in VBA überprüfen: Gehe zu den VBA-Optionen und stelle sicher, dass die Option „Bei jedem Fehler unterbrechen“ nicht aktiviert ist, um die Fehlersuche zu erleichtern.


Häufige Fehler und Lösungen

  • Laufzeitfehler '6' Überlauf: Dieser Fehler tritt häufig auf, wenn eine Variable einen Wert erhält, der den maximalen Bereich für ihren Datentyp überschreitet. Stelle sicher, dass alle Variablen, die große Zahlen speichern, als Long deklariert sind.

  • Fehler durch falsche Excel-Version: Einige Funktionen oder Eigenschaften, wie CountLarge, sind in älteren Excel-Versionen nicht verfügbar. Überprüfe die Excel-Version und passe den Code entsprechend an.

  • Falsche Daten im Arbeitsblatt: Überprüfe, ob das Arbeitsblatt leer ist oder ob unerwartete Werte vorhanden sind, die zu einem Überlauf führen könnten.


Alternative Methoden

Wenn der Laufzeitfehler 6 Überlauf weiterhin auftritt, kannst Du alternativ folgende Methoden in Betracht ziehen:

  1. Daten in kleinere Bereiche unterteilen: Wenn Du mit großen Datenmengen arbeitest, unterteile diese in kleinere Bereiche, um die Wahrscheinlichkeit eines Überlaufs zu verringern.

  2. Iterative Ansätze verwenden: Statt große Datenmengen auf einmal zu verarbeiten, iteriere durch die Daten und bearbeite sie schrittweise.

  3. Verwendung von Arrays: Lade die Daten in ein Array, bearbeite sie und schreibe sie dann zurück ins Arbeitsblatt. Dies kann helfen, Speicherprobleme zu vermeiden.


Praktische Beispiele

Ein häufiges Beispiel für den Laufzeitfehler 6 Überlauf ist die Verwendung der Rows.Count-Eigenschaft in einer Funktion. Hier ist ein Beispiel, das zeigt, wie Du den Fehler vermeiden kannst:

Public Function ErsteFreieZeile(ByVal ws As Worksheet, ByVal spalte As Integer) As Long
    Dim i As Long
    On Error GoTo Fehler

    i = ws.Cells(ws.Rows.Count, spalte).End(xlUp).Row + 1
    ErsteFreieZeile = i
    Exit Function

Fehler:
    ErsteFreieZeile = -1 ' Fehlercode zurückgeben
End Function

In diesem Beispiel wird sichergestellt, dass die Zeilenanzahl korrekt ermittelt wird.


Tipps für Profis

  • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren, was dazu beiträgt, Fehler zu vermeiden.

  • Debugging: Nutze die Debugging-Tools in VBA, um den Code Zeile für Zeile zu überprüfen. Setze Haltepunkte, um den Fluss Deines Codes zu verfolgen.

  • Regelmäßige Backups: Speichere regelmäßig Kopien Deiner Arbeitsbuchdateien, um Datenverluste zu vermeiden, insbesondere wenn Du mit komplexen VBA-Skripten arbeitest.


FAQ: Häufige Fragen

1. Was bedeutet der Laufzeitfehler 6 Überlauf?
Der Laufzeitfehler 6 Überlauf tritt auf, wenn ein Wert außerhalb des zulässigen Bereichs für den Datentyp einer Variablen liegt. Beispielsweise kann eine Integer-Variable nicht mehr als 32.767 speichern.

2. Wie kann ich den Laufzeitfehler 6 Überlauf in Excel VBA vermeiden?
Um diesen Fehler zu vermeiden, stelle sicher, dass Du alle Variablen, die große Werte speichern, als Long deklarierst und die CountLarge-Eigenschaft verwendest, wenn Du mit großen Datenmengen arbeitest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige