Microsoft Excel

Herbers Excel/VBA-Archiv

Überlauf in Schleife

    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
      


    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


      


    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


      


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

    mit Long ging es super

    Steffen


     

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