Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Überlauf in Schleife

Forumthread: Überlauf in Schleife

Überlauf in Schleife
02.10.2003 16:27:52
Steffen
Hallo und guten Tag,

ich habe folgenden CODE


Sub asw_einsetzen()
'Daten aus Originaldatei in Auswertungsdatei übernehmen
Dim quelldaten As Byte
Dim aswdaten As Byte
'Dim suchspalte As String
Dim eintragungsspalte As Byte
Dim intRow As Integer
Dim WS1 As Worksheet, WS2 As Worksheet
Dim i As Integer
Set WS1 = Workbooks("NW_ZL_MLDG_2003.xls").Worksheets("Daten")
Set WS2 = Workbooks("NW_ZL_MLDG_2003.xls").Worksheets("asw_druck")
hzasw = Workbooks(ThisWorkbook.Name).Worksheets("allgemein").Range("J64").Value
hzaswII = Workbooks(ThisWorkbook.Name).Worksheets("allgemein").Range("J65").Value
hzaswIII = Workbooks(ThisWorkbook.Name).Worksheets("allgemein").Range("N65").Value
intRow = WS1.Cells(Rows.Count, 7).End(xlUp).Row
suchspalte = Workbooks(ThisWorkbook.Name).Worksheets("allgemein").Range("N63").Value
'schutz aufheben
WS2.Unprotect (PSWDTP)
aswdaten = 3
For quelldaten = 3 To intRow
'Abfrage für normale Begriffe
If WS1.Cells(quelldaten, suchspalte).Value = hzasw And WS1.Cells(quelldaten, suchspalte).Value <> "" Then
For eintragungsspalte = 1 To 36
WS2.Cells(aswdaten, eintragungsspalte).Value = WS1.Cells(quelldaten, eintragungsspalte).Value
Next eintragungsspalte
WS2.Cells(aswdaten, 4).Value = aswdaten - 2
aswdaten = aswdaten + 1
'Abfrage für ganze Bereiche
ElseIf WS1.Cells(quelldaten, suchspalte).Value >= hzaswII And WS1.Cells(quelldaten, suchspalte).Value <= hzaswIII And WS1.Cells(quelldaten, suchspalte).Value <> "" And hzaswIII <> "" Then
For eintragungsspalte = 1 To 36
WS2.Cells(aswdaten, eintragungsspalte).Value = WS1.Cells(quelldaten, eintragungsspalte).Value
Next eintragungsspalte
WS2.Cells(aswdaten, 4).Value = aswdaten - 2
aswdaten = aswdaten + 1
'Abfrage für Beträge
ElseIf WS1.Cells(quelldaten, suchspalte).Value > 0 And suchspalte >= 20 And suchspalte <> 33 Then
For eintragungsspalte = 1 To 36
WS2.Cells(aswdaten, eintragungsspalte).Value = WS1.Cells(quelldaten, eintragungsspalte).Value
Next eintragungsspalte
WS2.Cells(aswdaten, 4).Value = aswdaten - 2
aswdaten = aswdaten + 1
Else
End If
Next quelldaten
'Änderungen einschalten
Application.ScreenUpdating = True
'Auswertungsdaten nummerieren
nummerieren_asw
'schutz setzen
WS2.Protect Password:=PSWDTP, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
End Sub


Mein Problem ist jetzt, dass Excel einen Überlauf bei folgender Zeile bringt:

For quelldaten = 3 To intRow

Ich habe in meiner Tabelle 385 Datensätze und Excel steigt bei ca. 250 Datensätze mit dem Fehler aus: Laufzeitfehler 6 Überlauf.

Meine Tabelle wird sicherlich noch größer, wie bekomme ich den Fehler weg?

Danke schonmal

Steffen
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Überlauf in Schleife
02.10.2003 16:31:45
PeterW
Hallo Steffen,

schau dir mal die Dimensionierung von Quelldaten an.

Gruß
Peter
AW: Überlauf in Schleife
02.10.2003 16:54:06
GraFri
Hallo

Hallo

Der Datentyp Byte hat nur einen Bereich bis 255.
Besser wäre Datentyp Integer (+/- 32768) bzw. Datentyp Long (+/- 2147483648)

mfg, GraFri

mfg, GraFri
Anzeige
Danke Dir,
03.10.2003 10:16:17
Steffen
mit Long ging es super

Steffen
;
Anzeige

Infobox / Tutorial

Überlauf-Fehler in Excel VBA Schleifen beheben


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und gehe zu dem Visual Basic for Applications (VBA) Editor. Dies kannst du tun, indem du ALT + F11 drückst.

  2. Suche den betreffenden Code, in dem der Überlauf-Fehler auftritt. In deinem Fall ist das die Schleife:

    For quelldaten = 3 To intRow
  3. Ändere den Datentyp von Byte zu Long. Der Byte-Datentyp hat nur einen Wertebereich von 0 bis 255. Um sicherzustellen, dass du auch mit größeren Datensätzen arbeiten kannst, sollte die Deklaration so aussehen:

    Dim quelldaten As Long
  4. Speichere deine Änderungen und teste das Skript erneut. Der Überlauf-Fehler sollte nun behoben sein, und dein Programm sollte auch mit mehr als 255 Datensätzen funktionieren.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 6 Überlauf
    Ursache: Der Datentyp Byte kann nur Werte bis 255 speichern.
    Lösung: Ändere den Datentyp auf Integer oder Long.

  • Fehler: Falsche Dimensionierung bei Datentypen
    Ursache: Wenn du versuchst, einen Wert außerhalb des erlaubten Bereichs für den gewählten Datentyp zu speichern.
    Lösung: Verwende größere Datentypen, wie Long für höhere Werte.


Alternative Methoden

Wenn du bei der Arbeit mit großen Datenmengen häufig mit Überlauf-Fehlern konfrontiert bist, kannst du auch folgende Alternativen in Betracht ziehen:

  • Verwendung von Variant: Dieser Datentyp kann fast alle Arten von Werten speichern und passt sich automatisch an, kann aber mehr Speicher verbrauchen.

  • Dynamische Arrays: Wenn du mit vielen Datensätzen arbeitest, kannst du auch dynamische Arrays verwenden, um die Daten effizienter zu verarbeiten.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das den Überlauf-Fehler in einer Schleife vermeidet:

Sub BeispielÜberlauf()
    Dim i As Long
    Dim maxRow As Long

    maxRow = 1000 ' Maximaler Wert der Zeilen
    For i = 1 To maxRow
        ' Deine Logik hier
    Next i
End Sub

In diesem Beispiel wird i als Long deklariert, um sicherzustellen, dass du keinen Überlauf bekommst, wenn du mit vielen Zeilen arbeitest.


Tipps für Profis

  • Verwende immer den am besten geeigneten Datentyp: Überlege dir, wie groß die Werte in deinem Code werden können, bevor du einen Datentyp festlegst.

  • Teste deinen Code regelmäßig: Führe Tests durch, um sicherzustellen, dass dein Code auch bei größeren Datenmengen stabil läuft.

  • Vermeide globale Variablen: Nutze lokale Variablen, um die Lesbarkeit und Wartbarkeit deines Codes zu erhöhen.


FAQ: Häufige Fragen

1. Was ist ein Überlauf in Excel VBA?
Ein Überlauf tritt auf, wenn ein Wert, der in einer Variablen gespeichert werden soll, den maximalen Bereich des Datentyps überschreitet.

2. Wie kann ich einen Überlauf-Fehler vermeiden?
Verwende den richtigen Datentyp, der ausreichend Speicherplatz für die erwarteten Werte bietet, z.B. Long anstelle von Byte.

3. Was sind die besten Datentypen für große Datenmengen?
Für große Datenmengen sind Long oder Double die besten Wahlmöglichkeiten, da sie einen größeren Wertebereich bieten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige