Überlauf in Schleife

Bild

Betrifft: Überlauf in Schleife
von: Steffen
Geschrieben am: 02.10.2003 16:27:52

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
Bild


Betrifft: AW: Überlauf in Schleife
von: PeterW
Geschrieben am: 02.10.2003 16:31:45

Hallo Steffen,

schau dir mal die Dimensionierung von Quelldaten an.

Gruß
Peter


Bild


Betrifft: AW: Überlauf in Schleife
von: GraFri
Geschrieben am: 02.10.2003 16:54:06

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


Bild


Betrifft: Danke Dir,
von: Steffen
Geschrieben am: 03.10.2003 10:16:17

mit Long ging es super

Steffen


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Überlauf in Schleife"