Home Office-Hilfe.com - Wir lösen Ihr Problem mit Microsoft Excel, Word, Outlook, PowerPoint, Access gratis Forum Impressum

 [Excel 2007] Schleife wird zu früh beendet
Neues Thema eröffnenNeue Antwort erstellen
Autor Nachricht
fette Elfe
Office-Hilfe.com-Neuling
Office-Hilfe.com-Neuling


Anmeldedatum: 18.09.2009
Beiträge: 49

BeitragVerfasst am: 06.02.2010, 14:07 Nach oben

Hallo,

in einer Mappe gebe ich über eine UF meine Daten im 1. Blatt ein.
Wenn ein bestimmtes Kriterium erfüllt ist, wird die zuletzt eingegebene Zeile mittels Makro in ein 2. Blatt kopiert.
Dort werden ebenfalls mittels Makro, in den Zeilen 5 - 6- 7 Monatssummen aus bestimmten Spalten anhand des Datwertes gebildet, in der entsprechenden Zelle gespeichert, an ein Label übergeben und so angezeigt.
Soweit scheint alles fehlerfrei zu klappen.


Allerdings brauche ich noch die Gesamtsummen aus den Zeilen 5 und 6.

Damit Excel jetzt nicht nochmal die entsprechenden Spalten komplett durchrechnen muss, wollte ich eigentlich die Summen in den Zeilen zusammenrechnen lassen, in einer bestimmten Zelle speichern und auch an ein Label übergeben und so anzeigen lassen.

In den Schleifen wird zuerst auf die letzte ausgefüllte Zelle in der entsprechenden Zeile geprüft.
Danach soll die Schleife eigentlich jede ausgefüllte Zelle nacheinander zum Wert einer Variablen addieren.

Leider steigen die Schleifen aber zu früh aus, arbeiten nicht alle ausgefüllten Zellen ab.


Auffällig finde ich, dass die Schleife für Zeile 5 genau 5x arbeitet bevor sie aussteigt, und die Schleife für Zeile 6 genau 6x.
Möglicherweise besteht da ja ein Zusammenhang?


Code:
Public Sub SummeFPEingang()
  Dim a As Variant                ' Variable zur Summenbildung
  Dim loLetzte As Long            ' Letzte belegte Zelle
  Dim loZelle As Long             ' Zellenzähler für Schleife
    With Worksheets("Sped. XY")
      'letzte belegte Zelle in Zeile 5
      loLetzte = IIf(IsEmpty(.Cells(5, .Columns.Count)), .Cells(5, .Columns.Count).End(xlToLeft).Row, .Columns.Count)
      'Vergleich beginnt ab Zelle 1
      For loZelle = 1 To loLetzte
        a = a + .Cells(5, loZelle).Value
      Next loZelle
      Cells(1, 1).Value = a
      If a = 0 Then
        Cells(1, 1).Value = 0
      End If
      .LabelFPEingang.Caption = "FP Rein" & "    " & Range("A1").Value
    End With
End Sub


Code:
Public Sub SummeFPAusgang()
  Dim b As Variant                ' Variable zur Summenbildung
  Dim loLetzte As Long            ' Letzte belegte Zelle
  Dim loZelle As Long             ' Zellenzähler für Schleife
    With Worksheets("Sped. XY")
      'letzte belegte Zelle in Zeile 6
      loLetzte = IIf(IsEmpty(.Cells(6, .Columns.Count)), .Cells(6, .Columns.Count).End(xlToLeft).Row, .Columns.Count)
      'Vergleich beginnt ab Zelle 1
      For loZelle = 1 To loLetzte
        b = b + .Cells(6, loZelle).Value
      Next loZelle
      Cells(1, 2).Value = b
      If b = 0 Then
        Cells(1, 2).Value = 0
      End If
      .LabelFPAusgang.Caption = "FP Raus" & "    " & Range("B1").Value
    End With
End Sub




Ich hoffe Ihr könnt mir helfen.

Ich hoffe die Fehlersuche/Hilfe ist auch ohne Beispieldatei möglich.
Ansonsten muss ich wegen Datenschutz (Firmendaten) halt in einer Kopie eine ganze Menge ändern (würde mir diese Arbeit gerne ersparen wenn möglich).
Die originalen Namen habe ich im hier angegebenen Code natürlich geändert.

_________________
Lieben Gruß Achim


Win XP Professional SP3
Office 2007 Professional SP2
Benutzer-Profile anzeigenPrivate Nachricht senden
Beverly
Office-Hilfe.com-Durchblicker
Office-Hilfe.com-Durchblicker


Anmeldedatum: 26.08.2009
Beiträge: 213
Wohnort: Bergstadt Freiberg/Sa.

BeitragVerfasst am: 07.02.2010, 12:10 Nach oben

Hi Achim,

die Summe kannst du viel einfacher auch ohne Schleife ermitteln:

Code:
Public Sub SummeFPEingang()
    Dim loLetzte As Long            ' Letzte belegte Zelle
    With Worksheets("Sped. XY")
      'letzte belegte Zelle in Zeile 5
      loLetzte = IIf(IsEmpty(.Cells(5, .Columns.Count)), .Cells(5, .Columns.Count).End(xlToLeft).Row, .Columns.Count)
      .LabelFPEingang.Caption = "FP Rein" & "    " & Application.Sum(.Range(.Cells(5, 1), .Cells(5, loLetzte)))
    End With
End Sub


Bis später,
Karin
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
fette Elfe
Office-Hilfe.com-Neuling
Office-Hilfe.com-Neuling


Anmeldedatum: 18.09.2009
Beiträge: 49

BeitragVerfasst am: 07.02.2010, 20:50 Nach oben

Ganz lieben Dank Karin,
klappt super.

So ist die Anzahl der ausgefüllten Zellen in den Zeilen 5 und 6 wenigstens nicht festgelegt.
(so eine Lösung hatte ich zwischenzeitlich als Provisorium um erst mal weiterarbeiten zu können)

Seltsam finde ich das mit den Schleifen dennoch.
Falls da noch jemand eine Erklärung zu wüsste...
wäre ich dankbar.
Das könnte helfen in Zukunft Fehler zu vermeiden.

_________________
Lieben Gruß Achim


Win XP Professional SP3
Office 2007 Professional SP2
Benutzer-Profile anzeigenPrivate Nachricht senden
Beverly
Office-Hilfe.com-Durchblicker
Office-Hilfe.com-Durchblicker


Anmeldedatum: 26.08.2009
Beiträge: 213
Wohnort: Bergstadt Freiberg/Sa.

BeitragVerfasst am: 07.02.2010, 22:34 Nach oben

Hi Achim,

warum ist das seltsam? Du lässt doch die Schleife von 1 bis zu letzten belegten Spalte in der betreffenden Zeile laufen, damit die Variable a die Summe aus dem vorhergehenden Wert + dem Wert der Zelle der jeweiligen Spalte aufnimmt - das ist eine ganz logische Vorgehensweise und nichts Mysteriöses.

Bis später,
karin
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
fette Elfe
Office-Hilfe.com-Neuling
Office-Hilfe.com-Neuling


Anmeldedatum: 18.09.2009
Beiträge: 49

BeitragVerfasst am: 08.02.2010, 14:54 Nach oben

Beverly hat Folgendes geschrieben:
Hi Achim,

warum ist das seltsam? Du lässt doch die Schleife (...) - das ist eine ganz logische Vorgehensweise und nichts Mysteriöses.



Hi Karin,
ich wundere mich ja auch nicht über das was ich die Schleifen machen lassen will, sondern über das was sie tuen.

Siehe mein erstes Posting direkt über dem Code:

fette Elfe hat Folgendes geschrieben:
Leider steigen die Schleifen aber zu früh aus, arbeiten nicht alle ausgefüllten Zellen ab.


Auffällig finde ich, dass die Schleife für Zeile 5 genau 5x arbeitet bevor sie aussteigt, und die Schleife für Zeile 6 genau 6x.
Möglicherweise besteht da ja ein Zusammenhang?


Im Test hatte ich sowohl in Spalte 5 als auch in Spalte 6 jeweils die ersten 16 (!) Zellen ausgefüllt. Um Fehler auszuschließen hatte ich sie zuerst alle mit "0" gefüllt, und danach per Dateneingabe mit entsprechenden Werten.

Das alles an 2 verschiedenen tagen und mit x-Rechner-Neustarts um PC-Fehler möglichst auszuschließen.
Jeweils auch immer die Zellen kontrolliert und die Schreibweise der Schleifen auch mehrfach.

Es war jedes mal das Gleiche:
In Zeile 5 läuft die Schleife nur die ersten 5 Zellen und steigt dann aus.
In Zeile 6 dann die ersten 6 Zellen.
Ebenso wenn ich das Makro im Einzelschritt verfolge.

Die Zellen haben alle die gleiche Formatierung und sind nicht ausgeblendet.

Dieses Verhalten der Schleifen kann ich mir halt nicht erklären, ich finde den Fehler nicht.
Würde ihn aber gerne finden um ihn beim nächsten mal vermeiden zu können.

_________________
Lieben Gruß Achim


Win XP Professional SP3
Office 2007 Professional SP2
Benutzer-Profile anzeigenPrivate Nachricht senden
Beverly
Office-Hilfe.com-Durchblicker
Office-Hilfe.com-Durchblicker


Anmeldedatum: 26.08.2009
Beiträge: 213
Wohnort: Bergstadt Freiberg/Sa.

BeitragVerfasst am: 08.02.2010, 15:23 Nach oben

Hi Achim,

du willst offensichtlich etwas anderes machen als in deinem Code steht (nur den sehe ich und nicht deine Arbeitsmappe) und dort steht:

Zitat:
'letzte belegte Zelle in Zeile 6


In Wirklichkeit aber wolltest du in der Schleife nicht alle Zellen einer Zeile (also von links nach rechts) sondern alle Zellen einer Spalte (von oben nach unten) durchlaufen. Deine Codezeile ermittelt aber die letzte belegte Spalte in der Zeile. Wenn nur 5 Spalten belegt sind, ist bei dir loLetzte = 5 und folglich läuft die Schleife auch nur bis 5.

Die letzte belegte Zeile einer Spalte (hier Spalte A) ermittelt man mit der folgenden Codezeile:
Code:
    loLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)


Bis später,
Karin
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
fette Elfe
Office-Hilfe.com-Neuling
Office-Hilfe.com-Neuling


Anmeldedatum: 18.09.2009
Beiträge: 49

BeitragVerfasst am: 08.02.2010, 18:15 Nach oben

Wirklich ganz lieben Dank für Deine Bemühungen Karin,
aber ich glaube Du hast recht: so wird das nichts

Da bisher kein Fehler in meinem Code gefunden wurde, gehe ich davon aus das auch keiner drinn ist.
Demzufolge wollte ich auch nichts anderes machen als in meinem Code steht.

Nirgendwo habe ich von Spalten geschrieben.
Ich wollte keine Spalten durchsuchen sondern Zeilen.
Und zwar mit einer Schleife die Zeile 5 und mit der anderen Schleife die Zeile 6, und so 2 Ergebnisse bekommen.

Nur, wenn kein Fehler im Code ist, die Zellen A5 bis P5 ausgefüllt (also nicht leer) sind, warum bricht die Schleife nach 5 Durchläufen (also nach Bearbeitung von A5 bis E5) ab und bearbeitet die anderen 11 ausgefüllten Zellen nicht?
Die andere Schleife hat in Zeile 6 von A6 bis F6, also 6x gearbeitet, obwohl A6 bis P6 ausgefüllt waren.

Ich hoffe es ist nun verständlich geschrieben.

Ich vermute inzwischen auch, das mir hier niemand eine Antwort darauf geben kann, ich fand es nur äußerst auffällig das in Zeile 5 genau 5x und in Zeile 6 genau 6x gearbeitet wird (reproduzierbar).
Deshalb dachte ich, ich hätte einen Fehler im Code.

Aber vermutlich ist der Fehler entweder irgendwo ganz anders in den Tiefen meiner Datei versteckt, oder es ist ein Bug, oder irgendein Problem von meinem PC oder von Excel was es so auf keinem anderen Rechner gibt.

_________________
Lieben Gruß Achim


Win XP Professional SP3
Office 2007 Professional SP2
Benutzer-Profile anzeigenPrivate Nachricht senden
fette Elfe
Office-Hilfe.com-Neuling
Office-Hilfe.com-Neuling


Anmeldedatum: 18.09.2009
Beiträge: 49

BeitragVerfasst am: 08.02.2010, 18:33 Nach oben

Irgendwie lässt es mir nun doch keine Ruhe.
Ich habe gerade die beiden o.g. Schleifen nochmal in meinen Code eingebaut...
der gleiche Fehler passiert wieder.

Ich mache eine Testdatei zum Vorzeigen fertig und lade sie nachher hier hoch, vielleicht kommt ja doch noch jemand diesen "arbeitsfaulen Schleifen" auf die Schliche.

_________________
Lieben Gruß Achim


Win XP Professional SP3
Office 2007 Professional SP2
Benutzer-Profile anzeigenPrivate Nachricht senden
fette Elfe
Office-Hilfe.com-Neuling
Office-Hilfe.com-Neuling


Anmeldedatum: 18.09.2009
Beiträge: 49

BeitragVerfasst am: 08.02.2010, 20:58 Nach oben

Sry, hat etwas gedauert die Datei fürs Forum zurecht zu stutzen.

Im Original hat sie 1,55MB, erlaubt sind hier aber nur 256KB als Anhang und externe Links sind ja leider verboten/nicht erwünscht.
Deshalb bitte ich nicht wundern, ich habe alles entfernt was nicht absolut zum Testen notwendig ist. Es war echt nicht ganz einfach die Datei so klein zu bekommen. Deshalb sieht jetzt einiges sehr merkwürdig aus.



Zum Problem:
Im Blatt "Sped. DHL" oben links zeigen die beiden großen Labels "FP Rein" und "FP Raus" die Werte 7 und 9. Dementsprechend zeigt das Label "FP Rein-Raus" den Wert -2. ( 7 - 9 = -2 )
Genau diese Labels werden durch die angesprochenen Schleifen befüllt.

Laut den eingegebenen Daten müssten die beiden ersten aber beide den Wert 24 zeigen und das dritte dementsprechend den Wert 0. ( 24 - 24 = 0 )




Die beiden "arbeitsfaulen Schleifen":
Public Sub SummeFPDHLEingang()
Public Sub SummeFPDHLAusgang()

sind im Modul5 als 5. und 6. Sub von oben zu finden.


Der auslösende Fehler kann übrigens nicht in irgendetwas versteckt sein, was ich jetzt gelöscht habe um die Datei fürs Forum klein genug zu bekommen.
Ich habe erst alles gelöscht und danach die Daten eingegeben.
Der Fehler tritt trotzdem auf.


Wenn noch Fragen sind, immer her damit.


Schleifen-brechen-zu-frueh-ab.xlsm
 Beschreibung:

Download
 Dateiname:  Schleifen-brechen-zu-frueh-ab.xlsm
 Dateigröße:  254.62 KB
 Heruntergeladen:  4 mal


_________________
Lieben Gruß Achim


Win XP Professional SP3
Office 2007 Professional SP2
Benutzer-Profile anzeigenPrivate Nachricht senden
Beverly
Office-Hilfe.com-Durchblicker
Office-Hilfe.com-Durchblicker


Anmeldedatum: 26.08.2009
Beiträge: 213
Wohnort: Bergstadt Freiberg/Sa.

BeitragVerfasst am: 09.02.2010, 09:22 Nach oben

Hi Achim,

vergleiche diese beiden Codezeilen

dein Code:
Code:
IIf(IsEmpty(.Cells(5, .Columns.Count)), .Cells(5, .Columns.Count).End(xlToLeft).Row, .Columns.Count)


der korrekte Code:
Code:
IIf(IsEmpty(.Cells(5, .Columns.Count)), .Cells(5, .Columns.Count).End(xlToLeft).Column, .Columns.Count)


Bis später,
Karin
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
fette Elfe
Office-Hilfe.com-Neuling
Office-Hilfe.com-Neuling


Anmeldedatum: 18.09.2009
Beiträge: 49

BeitragVerfasst am: 09.02.2010, 21:20 Nach oben

Oh Mann! *mitKoppvorWandlauf*

Dankeschön Karin.

Ich hab den Code x-mal überprüft und es nicht gesehen...
irgendwann wird man betriebsblind.

Das kommt davon wenn man faul sein will und ähnliche Code-Zeilen kopiert und nur abändert, anstatt sie einzutippen.

(wenigstens kann ich jetzt wieder ruhig schlafen *lach*)

_________________
Lieben Gruß Achim


Win XP Professional SP3
Office 2007 Professional SP2
Benutzer-Profile anzeigenPrivate Nachricht senden
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen


Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Verlinkte Emailadresse wird falsch &q... pieb1206 Microsoft Outlook Hilfe 1 04.03.2010, 09:32 Letzten Beitrag anzeigen
Keine neuen Beiträge Termin - Schleife muss 3 mal durchlau... den1ce Microsoft Outlook Hilfe 2 02.03.2010, 16:55 Letzten Beitrag anzeigen
Keine neuen Beiträge Gesamtgröße wird nicht gesenkt ohne e... heithoms Microsoft Excel Hilfe 2 01.03.2010, 10:13 Letzten Beitrag anzeigen
Keine neuen Beiträge Geschriebenes in neuem Dokument wird ... triplechocolate Microsoft Word Hilfe 1 28.02.2010, 19:43 Letzten Beitrag anzeigen
Keine neuen Beiträge Simples Problem mit Kopieren von Zell... Argon22 Microsoft Excel Hilfe 3 21.02.2010, 11:35 Letzten Beitrag anzeigen


 Gehe zu:   



Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen

Haftungsausschluss/Disclaimer


SMS kostenlos versenden | Tuning Forum | krankenversicherungsvergleich | Wii Modchip Xbox 360 Konsole


Ranking-Hits



Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Alle Zeiten sind GMT + 1 Stunde
Deutsche Übersetzung von phpBB.de