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

Forumthread: Fehler Überlauf "6" bei Array trotz Long

Fehler Überlauf "6" bei Array trotz Long
15.02.2020 12:41:01
Bernd
Hallo Forum,
ich habe folgendes Problem:
Bei einem komplexen VBA-Marko habe ich die Variablen Integer in Long abgeändert, um mit größeren Arrays arbeiten zu können.
Trotz des Datentyps "Long" bekomme ich nun an einer Stelle, an der ein Array (i,j) befüllt wird ab der Array-Größe 32767 die Fehlermeldung "6" Überlauf.
Wenn ich den Test mit der Array-Größe 32766 durchführe, läuft das Programm durch.
Ich habe mehrfach überprüft, ob ich alle Integer-Variablen in Long-Variablen abgeändert habe - daran kann der Fehler nicht liegen...
Kann mir jemand weiterhelfen mit einem Tipp bei diesem "Phänomen"...
Vorab vielen Dank für Eure Hinweise...
Bernd
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler Überlauf "6" bei Array trotz Long
15.02.2020 12:50:02
onur
Sind denn i und j auch LONG?
AW: Fehler Überlauf "6" bei Array trotz Long
15.02.2020 13:02:18
Zwenn
Hi onur,
Deine Annahme scheint mit naheliegender zu sein als meine. Aber er schrieb ja, er ist alle Variablen durchgegangen, um sie ggf. auf Long zu ändern. Wir dürfen gespannt auf das Makro warten ;-)
Viele Grüße,
Zwenn
AW: Fehler Überlauf "6" bei Array trotz Long
15.02.2020 12:56:52
Zwenn
Hallo Bernd,
Dein Makrocode wäre schon ganz gut. Ich nehme an, Du verwechselst die Anzahl der möglichen Elemente in einem Array mit dem Inhalt der Elemente des Arrays. Die Menge der Elemente ist nicht abhängig von einem Datentyp wie Integer oder Long. Die wird einfach festgelegt.
Der Inhalt der Array-Elemente hingegen muss dem Datentyp entsprechen, den Du für das Array festlegst. Deklarierst Du Dein Array also z.B. als Long, kannst Du da keine Werte vom Typ String drin ablegen. Das gäbe allerdings einen TypeMismatch. Fehler 6 weist auf zu große Zahlen hin.
Wie gesagt, poste mal Deinen Code.
Viele Grüße,
Zwenn
Anzeige
AW: Fehler Überlauf "6" bei Array trotz Long
15.02.2020 12:57:45
onur
Wenn du Genaueres wissen willst, solltest du das geheime Makro auch mal posten, damit man nicht herumraten muss.
AW: Fehler Überlauf "6" bei Array trotz Long
15.02.2020 16:39:04
Bernd
Fehler gefunden....!!!
Die Hinweise haben mir indirekt weitergeholfen...
Man sollte halt auch die lokalen Variablen i und j im Array auf Integer setzen...
AW: Fehler Überlauf "6" bei Array trotz Long
15.02.2020 16:42:34
onur
Du meinst "LONG"?
INDIREKT ?
DAS HABE ICH DIR 15.02.2020 12:50:02 GEPOSTET:
"Sind denn i und j auch LONG?"
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Fehler Überlauf "6" bei Array trotz Long in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Fehler Überlauf "6" in Excel VBA zu beheben, folge diesen Schritten:

  1. Überprüfe alle Variablen, die in deinem Code verwendet werden – insbesondere die für deine Arrays.
  2. Stelle sicher, dass die Variablen i und j, die als Indizes für dein Array dienen, als Long deklariert sind:
    Dim i As Long
    Dim j As Long
  3. Achte darauf, dass die Deklaration des Arrays korrekt ist. Wenn du ein Array mit dem Datentyp Long deklarierst, sollte dies so aussehen:
    Dim myArray() As Long
  4. Wenn du die Größe des Arrays festlegst, achte darauf, dass diese nicht zu groß ist, da dies zu einem Überlauf führen kann:
    ReDim myArray(1 To 32768) ' Beispiel für eine sehr große Array-Größe
  5. Führe das Makro erneut aus, um zu überprüfen, ob der Fehler weiterhin auftritt.

Häufige Fehler und Lösungen

  • Fehler: Überlauf bei Array Größe 32767

    • Lösung: Überprüfe, ob alle Indizes und Variablen als Long deklariert sind. Möglicherweise ist eine der Variablen noch als Integer deklariert, was zu einem VBA Fehler Überlauf führen kann.
  • Fehler: TypeMismatch

    • Lösung: Stelle sicher, dass die Werte, die in das Array eingefügt werden, dem Datentyp des Arrays entsprechen. Wenn du ein Array als Long deklariert hast, dürfen keine String-Werte eingefügt werden.

Alternative Methoden

Um den Überlauf in VBA zu verhindern, kannst du folgende alternative Methoden in Betracht ziehen:

  • Verwende Variant als Datentyp für dein Array, um flexibler mit verschiedenen Datentypen umzugehen:

    Dim myArray() As Variant
  • Reduziere die Größe des Arrays, wenn möglich, um den Speicherbedarf zu minimieren.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du ein Array in VBA deklarierst und mit Werten befüllst:

Sub BeispielArray()
    Dim myArray(1 To 100000) As Long
    Dim i As Long

    For i = 1 To 100000
        myArray(i) = i * 2
    Next i
End Sub

In diesem Beispiel wird ein Array mit Long deklariert und mit Werten befüllt. Achte darauf, dass die Größe des Arrays die Grenzen von Long nicht überschreitet.


Tipps für Profis

  • Nutze die Option Explicit Direktive, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, potenzielle Fehler frühzeitig zu erkennen.

  • Überlege, ob du Arrays wirklich benötigst oder ob eine Collection oder Dictionary in deinem Fall besser geeignet wäre.

  • Verwende Debug.Print oder MsgBox, um die Werte deiner Variablen und Arrays während der Ausführung zu überwachen und Probleme schneller zu identifizieren.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Integer und Long in VBA?
Integer kann Werte von -32.768 bis 32.767 speichern, während Long Werte von -2.147.483.648 bis 2.147.483.647 speichern kann. Wenn du mit großen Zahlen arbeitest, solltest du immer Long verwenden, um einen VBA Überlauf zu vermeiden.

2. Wie kann ich einen Überlauf in VBA verhindern?
Stelle sicher, dass alle verwendeten Variablen den richtigen Datentyp haben, und verwende Long für Indizes und Array-Deklarationen, insbesondere wenn du mit großen Datenmengen arbeitest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige