Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

For-Schleife zählt nicht richtig

For-Schleife zählt nicht richtig
15.12.2014 10:43:55
Theo
Hallo liebes Forum,
nachdem ich schon oft hilfreiche Beiträge von euch gelesen habe, muss ich euch heute jetzt auch mal was fragen. Und zwar geht es um For-Schleife (Rückwärts). Die meiner Meinung nach nicht zu Ende Zählt.
In der Tabelle geht es darum Zellen zu Verbinden, Wert rein schreiben, farbig markieren und einrahmen. Das klappt auch alles super. Es geht darum quasi einen Zeitstrahl dar zu stellen, für Aufträge, wobei Samstag Sonntag ausgelassen werden soll. Anbei ein Bild. Die Dauer des Auftrages wird automatisch berechnet und dann durch 6 Stunden (Arbeitsstunden pro Tag) geteilt, also quasi wie viel Tage der Auftrag laufen soll. Mein Code lautet wie folgt:
For gz2 = meintag + 1 To gz3 Step -1
If Cells(mab, gz2 - 1).Interior.ColorIndex = 15 Then
gz2 = gz2 - 3
gz3 = gz3 - 3
End If
Cells(mab, gz2).Interior.ColorIndex = farbe
Cells(mab, gz2).Value = nr
Sheets("slot15").Range(Cells(mab, gz2), Cells(mab, gz2 - 1)).MergeCells = True
Cells(mab, gz2).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Next gz2

Zum Verständis: Es wird Das Enddatum des Auftrags über eine UserForm eingegeben. Danach wird die Zeit für die Auftrag berechnet, und dann quasi rückwärts gerechnet wann man mit dem Auftrag beginnen soll.
In meinem Beispiel beträgt die Auftragszeit 185 Stunden/6 Stunden = (gerundet) 31 Tage. Am Anfang der Schleife haben die Variablen folgende Werte: gz2 = 59 gz3 = 28 (Also Schleife würde 31 mal durchlaufen -> passt). mab ist die Variable für die Zeile( Mitarbeiter abhängig)
Allerdings läuft sie bei mir 20 mal durch. Anbei noch das Bild zur Verständnis (Es wurde der 27. Februar 2015 als Endtermin vorgegeben) Die Grauen Zellen sind Samstag Sonntag, die übersprungen werden sollen. Die Gelben Zellen sind der Auftrag.
Sehr viel Text, und ja mein Code ist wahrscheinlich nicht grad der schönste ;)
Aber trotzdem vielen Dank im Vorraus.
Userbild

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For-Schleife zählt nicht richtig
15.12.2014 11:07:20
yummi
Hallo Theo,
du manipulierst deine Schleifenvariable innerhalb der Schleife (ganz böser Stil). Du durchläufst deine Schleife 31 mal, kommst dabei über 4 wochenenden in den du jeweils 3 abziehst, macht 12
Start bei 59 bis 28 abzäglich deiner 4 wochenenden also von 47 bis 28 = 19 durchläufe
Der einfachste umbau (auch nicht sehr schön, aber wesentlich sauberer:

If Cells(mab, gz2 - 1).Interior.ColorIndex = 15 Then
continue for
End If
Gruß
yummi

Da ist dir wohl eine andere PgmSprache ...
15.12.2014 11:14:02
Luc:-?
…rein geraten, Yummi!? ;-]
Gruß, Luc :-?

AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 11:53:03
Theo
Hi Yummi, also bei continue for gibt er mir einen Fehler kompilieren aus.
In meiner Schleife zieh ich doch allerdings auch bei der Endvariable immer 3 ab. Also bei gz3, dadurch müsste sich das doch wieder ausgleichen oder?
Gruß Theo

Anzeige
AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 11:57:54
yummi
Hallo Theo,
sry das kommt davon wenn man mit zig Sprachen zu tun hat ;-)
Laufvariablen manipuliert man nicht !!!
mach es wenn dannn lieber so:

For gz2 = meintag + 1 To gz3 Step -1
If Cells(mab, gz2 - 1).Interior.ColorIndex  15 Then
Cells(mab, gz2).Interior.ColorIndex = farbe
Cells(mab, gz2).Value = nr
Sheets("slot15").Range(Cells(mab, gz2), Cells(mab, gz2 - 1)).MergeCells = True
Cells(mab, gz2).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
end if
Next gz2
ist aber ungetestet, müsste aber besser funktionieren
Gruß
yummi

Anzeige
AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 12:38:39
Theo
Hi Yummi, jetzt zählt er mal immerhin weiter (bis 29), aber überspringt leider nur eine graue zelle
Userbild

AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 12:49:26
yummi
Hallo Theo,
lad mal eine Beispiel Datei hoch, dann schau ich mal was klemmt
Gruß
yummi

AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 13:36:11
Theo
Hi also hier ist die Datei. Einfach bei slot15 auf Auftrag anlegen klicken, irgendeine auftragsnummer eingeben, bei Mitarbeiter a und b auswählen, und bei Fahrzeug "351" auswählen. Farbe auswählen musst du auch sonst gehts nicht. Und ja der Code ist ein ziemliches durcheinander. Die Schleifen findest du im Modul 6, etwas weiter unten, steht dabei Mitarbeiter 1 oder sowas in der Art. Pass aber auf, die erste Schleife ist nur dafür gedacht wenn nur 1 MA am Auftrag arbeitet, ist hier aber im Beispiel aber deaktiviert, also etwas weiter nach unten scrollen ;)
Viel Spaß und Danke

Die Datei https://www.herber.de/bbs/user/94415.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 13:36:45
Theo
Hi also hier ist die Datei. Einfach bei slot15 auf Auftrag anlegen klicken, irgendeine auftragsnummer eingeben, bei Mitarbeiter a und b auswählen, und bei Fahrzeug "351" auswählen. Farbe auswählen musst du auch sonst gehts nicht. Und ja der Code ist ein ziemliches durcheinander. Die Schleifen findest du im Modul 6, etwas weiter unten, steht dabei Mitarbeiter 1 oder sowas in der Art. Pass aber auf, die erste Schleife ist nur dafür gedacht wenn nur 1 MA am Auftrag arbeitet, ist hier aber im Beispiel aber deaktiviert, also etwas weiter nach unten scrollen ;)
Viel Spaß und Danke

Die Datei https://www.herber.de/bbs/user/94415.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 13:36:46
Theo
Hi also hier ist die Datei. Einfach bei slot15 auf Auftrag anlegen klicken, irgendeine auftragsnummer eingeben, bei Mitarbeiter a und b auswählen, und bei Fahrzeug "351" auswählen. Farbe auswählen musst du auch sonst gehts nicht. Und ja der Code ist ein ziemliches durcheinander. Die Schleifen findest du im Modul 6, etwas weiter unten, steht dabei Mitarbeiter 1 oder sowas in der Art. Pass aber auf, die erste Schleife ist nur dafür gedacht wenn nur 1 MA am Auftrag arbeitet, ist hier aber im Beispiel aber deaktiviert, also etwas weiter nach unten scrollen ;)
Viel Spaß und Danke

Die Datei https://www.herber.de/bbs/user/94415.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 13:37:35
Theo
Hi also hier ist die Datei. Einfach bei slot15 auf Auftrag anlegen klicken, irgendeine auftragsnummer eingeben, bei Mitarbeiter a und b auswählen, und bei Fahrzeug "351" auswählen. Farbe auswählen musst du auch sonst gehts nicht. Und ja der Code ist ein ziemliches durcheinander. Die Schleifen findest du im Modul 6, etwas weiter unten, steht dabei Mitarbeiter 1 oder sowas in der Art. Pass aber auf, die erste Schleife ist nur dafür gedacht wenn nur 1 MA am Auftrag arbeitet, ist hier aber im Beispiel aber deaktiviert, also etwas weiter nach unten scrollen ;)
Viel Spaß und Danke

Die Datei https://www.herber.de/bbs/user/94415.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 13:37:44
Theo
Hi also hier ist die Datei. Einfach bei slot15 auf Auftrag anlegen klicken, irgendeine auftragsnummer eingeben, bei Mitarbeiter a und b auswählen, und bei Fahrzeug "351" auswählen. Farbe auswählen musst du auch sonst gehts nicht. Und ja der Code ist ein ziemliches durcheinander. Die Schleifen findest du im Modul 6, etwas weiter unten, steht dabei Mitarbeiter 1 oder sowas in der Art. Pass aber auf, die erste Schleife ist nur dafür gedacht wenn nur 1 MA am Auftrag arbeitet, ist hier aber im Beispiel aber deaktiviert, also etwas weiter nach unten scrollen ;)
Viel Spaß und Danke

Die Datei https://www.herber.de/bbs/user/94415.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 13:59:24
yummi
Hallo Theo,
ich hab leider die von dir verwendeten Bibliotheken nicht, kann es deswegen nicht laufen lassen.
Ich hab mal in der Schleife das so umgebaut, wie schon vorgeschlagen, ist es jetzt besser?
https://www.herber.de/bbs/user/94418.xlsm
GRuß
yummi

AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 14:01:37
yummi
Hallo Theo,
hab die von dir verwendeten Bibliotheken nicht und kann es deswegen nicht laufen lassen, hab aber mal die Schleife so geändert wie schon vorgeschlagen. Ist es jetzt besser?
https://www.herber.de/bbs/user/94418.xlsm
Gruß
yummi

Anzeige
AW: Da ist dir wohl eine andere PgmSprache ...
15.12.2014 14:43:43
Theo
Hi Yummi,
Also mit deinem Code sieht es jetzt so aus :
Userbild
hab dir nochmal eine neue Datei hochgeladen, jetzt müsste es eigtl gehen. Du konntest kein Datum auswählen oder? Jetzt ist nämlich ein Kalender in der Userform drinne.

Die Datei https://www.herber.de/bbs/user/94421.xlsm wurde aus Datenschutzgründen gelöscht


Gruß Theo

AW: Da ist dir wohl eine andere PgmSprache ...
16.12.2014 12:16:54
yummi
Hallo Theo,
ich weiß zwar nicht wieso Du meien Vorschläge nicht berücksichtigt hast, aber da waren noch andere Fehler drin. Durch das mergen der Zelle mit dem Vorgänger hast du dir jedesmal den Boden unter den Füßen weggerissen. Mit anderen Worten im durchlauf n (Mo) merged du mit der Zelle links (So) im nächsten Durchlauf überprüfst Du dann den Sonntag, ob er grau ist (ist er natürlich nicht mehr) und somit gibt es kein Wochenende (Arbeitgeberfreundlich ;-)
Ich hab mir mal ein fixes Datum anstatt deinem DatePicker eingestellt, hab es hoffentlich alles wieder zurück gestellt ;-)
Habe deine Schleife "ein wenig" geändert ohne den kompletten Code zu ändern. und jetzt hoffe ich ist es das Ergebnis, was Du haben willst.
https://www.herber.de/bbs/user/94436.xlsm
Gruß
yummi

Anzeige
AW: Da ist dir wohl eine andere PgmSprache ...
16.12.2014 13:23:53
Theo
Hi Yummi, ja ich hatte einfach das Original zurecht "geschnitten" für dich, ohne die bisherigen Änderungen zu übernehmen sorry ;)
Aber es funktioniert!!!!!!! Vielen Herzlichen Dank!!!!!!!! :)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige