Microsoft Excel

Excel und VBA: Beitrag aus Herbers Excel-Forumsarchiv

Laufzeitfehler 6 Überlauf

Betrifft: Laufzeitfehler 6 Überlauf
von: Andi
Geschrieben am: 05.07.2011 13:26:18

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

  

Betrifft: AW: Laufzeitfehler 6 Überlauf
von: Nepumuk
Geschrieben am: 05.07.2011 14:03:21

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


  

Betrifft: AW: Laufzeitfehler 6 Überlauf
von: Heiko S.
Geschrieben am: 05.07.2011 14:31:58

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


  

Betrifft: Korrektur
von: Heiko S.
Geschrieben am: 05.07.2011 14:39:50

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


  

Betrifft: @ Heiko
von: Andi
Geschrieben am: 05.07.2011 15:32:22


Die Variable ist definitiv als long deklariert, daran kann es nicht liegen.


  

Betrifft: @ Nepumuk
von: Andi
Geschrieben am: 05.07.2011 15:25:21



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?


  

Betrifft: On Error Resume Next und VBA Optionen
von: Tino
Geschrieben am: 05.07.2011 16:15:00

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


  

Betrifft: meinte Fehlerbehandlung oT.
von: Tino
Geschrieben am: 05.07.2011 16:16:09




  

Betrifft: @ Tino
von: Andi
Geschrieben am: 05.07.2011 17:01:58

Ja, Danke für den Hinweis.