Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
948to952
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
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

for ... to in Loop-schleife

for ... to in Loop-schleife
12.02.2008 10:45:00
Thorsten
Hallo zusammen,
ich bin am verzweifeln.
Ich erstelle ein Kapazitätsprüfung für unsere Firma.
Dabei möchte ich ermitteln ab wann ein Auftrag eingeplant werden kann.
Dazu habe ich folgenden code geschrieben.

u = D2 'Datum aus textbox'
Do
u = u + 1
NoWeekD = 0
With ActiveSheet
lz = .Cells(Rows.Count, 2).End(xlUp).Row 'letzte beschriebene Zeile ermitteln**
For i = 5 To lz 'beginne bei Zeile 5'
If .Cells(i, 2)  5 Then    'Wochenendtage ermitteln'
NoWeekD = NoWeekD + 1
End If
Next i
t = ((u - D1 + 1) - NoWeekD) ' Anzahl Arbeitstage zwischen heute und möglichem Termin ermitteln' _
Loop While Not s 


Mein Problem ist, dass es mir den Wert s nach jeder loop-Schleife weiterzählt und irgendwann ins unendliche geht. Der wert soll jedoch nur für die for...to schleife hochgezählt werden.
Wenn ich direkt nach dem
Do ein
s=0 einfüge, setzt es mir auch in der for...to schleife den wert jedesmal auf 0.
gibt es eine Möglichkeit, das s bei jeder neuen loop-schleife auf 0 zu setzten, jedoch in der for...to -Schleife soll es weiterzählen.
Hoffe ich konnte das Problem erläutern und freu mich auf eure Hilfe.
Danke

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: for ... to in Loop-schleife
12.02.2008 11:02:19
Klaus-Dieter
Hallo Thorsten,

With ActiveSheet
lz = .Cells(Rows.Count, 2).End(xlUp).Row 'letzte beschriebene Zeile ermitteln**
' Entweder hier s = 0 '################
For i = 5 To lz 'beginne bei Zeile 5'
If .Cells(i, 2) 


Viele Grüße Klaus-Dieter

Online-Excel

AW: for ... to in Loop-schleife
12.02.2008 12:10:36
Thorsten

Hallo klaus-Dieter,
so dachte ich das auch zunächst.
Aber ich habe unten dran die Abfrage
Loop While Not s 


Anzeige
AW: for ... to in Loop-schleife
12.02.2008 12:40:00
Klaus-Dieter
Hallo Thorsten,
dazu würde ich den vollständigen Quelltext benötigen. Möglicherweise müsste das ganz anders aufgebaut werden. Am besten, du stellst die Datei hier mal ein. Alternativ kannst du sie mir auch schicken. excel at klaus-dieter-2000.de
Viele Grüße Klaus-Dieter

Online-Excel

AW: for ... to in Loop-schleife
12.02.2008 13:22:17
Thorsten
Hallo Klaus Dieter,
das File kann ich dir leider nicht senden. Weil da auch Kundendaten drin stehen die ich nicht weitergeben darf.
Aber ich schildere dir mal was ich genau haben möchte.
Es geht um die Produktionsplanung für unseren Siebdruck
Ich gebe in eine Textbox ein Wunschdatum ein. Ebenso gibt es eine Textbox für Auftragsgröße, Nutzen und Anzahl der Drucke ((Auftragsgröße/Nutzen)*Drucke) ergibt die Anzahl der gesamtdrucke. Ich habe festgelegt dass ein Druck 0.00103359 Arbeitstage dauert.
Nun soll überprüft werden wieviel Arbeitstage es dauert die bereits angelegten Aufträge + den anzulegenden Auftrag zu drucken. Dies ist der Faktor s
Dann soll festgestellt werden wieviele Arbeitstage zwischen dem Wunschdatum und dem heutigen datum liegen.
Falls zwischen dem wunschdatum und dem heutigen Datum mehr Arbeitstage liegen, als die die ich zum Drucken aller Aufträge benötige, soll der Auftrag angelegt werden. (bedingung s Falls dies jedoch nicht der Fall ist (also s>t), dann soll ermittelt werden ab welchem Tag genug Kapazität frei ist um den Auftrag zu drucken. Hier habe ich dann die genannte Schleife verwendet. Diese schleife prüft für jeden Tag ab ob s Das Problem ist, dass die Schleife entweder nur einmal durchlaufen wird, wenn s=0 ist, oder dass es von der LooP-Schleife zuvor übernommen wird und riesen groß wird.
Hier der Quelltext von dieser Funktion.

Private Sub anlegen_Click()
Dim lz As Long, i As Long, dat As Date, s 'wieviel tage brauche ich für die aufträge bis termin' _
dat = CDate(termin)
With ActiveSheet
lz = .Cells(Rows.Count, 2).End(xlUp).Row 'letzte beschriebene Zeile ermitteln**
For i = 5 To lz 'beginne bei Zeile 5'
If .Cells(i, 2)  5 Then
NoWeekD = NoWeekD + 1
End If
Next i
t = ((D2 - D1 + 1) - NoWeekD)
If s  "" Then
artikelnummer = WorksheetFunction.Proper(artikelnummer.Value)
With Worksheets("datenbank").Columns(1)
Set rZelle = .Find(artikelnummer.Value, LookIn:=xlValues, Lookat:=xlWhole)
If Not rZelle Is Nothing Then
sFundst = rZelle.Address
ThisWorkbook.Sheets("siebdruck").Cells(5, 16) = .Cells(rZelle.Row, 5). _
Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 1) = auftragsdatum.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 2) = termin.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 3) = produktbezeichnung.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 4) = artikelnummer.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 5) = auftragsgröße.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 7) = nutzen.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 11) = bemerkung.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 6) = anzahl.Value
Else
ThisWorkbook.Sheets("siebdruck").Cells(5, 17) = "x"
ThisWorkbook.Sheets("siebdruck").Cells(5, 1) = auftragsdatum.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 2) = termin.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 3) = produktbezeichnung.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 4) = artikelnummer.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 5) = auftragsgröße.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 7) = nutzen.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 11) = bemerkung.Value
ThisWorkbook.Sheets("siebdruck").Cells(5, 6) = anzahl.Value
End If
End With
End If
If Auftrag_anlegen_SB.cu.Value = True Then
ThisWorkbook.Sheets("siebdruck").Cells(5, 9) = "CU"
End If
If Auftrag_anlegen_SB.ff.Value = True Then
ThisWorkbook.Sheets("siebdruck").Cells(5, 9) = "FF"
End If
If Auftrag_anlegen_SB.cu.Value = True Then
ThisWorkbook.Sheets("siebdruck").Cells(5, 17) = ""
End If
If Auftrag_anlegen_SB.cu.Value = True Then
ThisWorkbook.Sheets("siebdruck").Cells(5, 16) = ""
End If
If Auftrag_anlegen_SB.cu.Value = True Then
ThisWorkbook.Sheets("siebdruck").Cells(5, 18).FormulaR1C1 = "=ROUNDUP((RC[-13]/RC[- _
11])*1.02,0)"
End If
If Auftrag_anlegen_SB.ff.Value = True Then
ThisWorkbook.Sheets("siebdruck").Cells(5, 18).FormulaR1C1 = "=ROUNDUP(((RC[-13]/RC[- _
11])+RC[-12])*1.02,0)"
End If
If (Auftrag_anlegen_SB.cu.Value = False) And (Auftrag_anlegen_SB.ff.Value = False)  _
Then
MsgBox "Kupfer oder Frontfolie markieren"
auftragsdatum.SetFocus
Exit Sub
End If
'Hier gehts weiter'
Else
u = D2 'Datum aus textbox'
Do
u = u + 1
NoWeekD = 0
With ActiveSheet
lz = .Cells(Rows.Count, 2).End(xlUp).Row 'letzte beschriebene Zeile ermitteln**
For i = 5 To lz 'beginne bei Zeile 5'
If .Cells(i, 2)  5 Then    'Wochenendtage ermitteln'
NoWeekD = NoWeekD + 1
End If
Next i
t = ((u - D1 + 1) - NoWeekD) ' Anzahl Arbeitstage zwischen heute und möglichem Termin  _
ermitteln'
Loop While Not s 


Anzeige
AW: for ... to in Loop-schleife
12.02.2008 13:51:53
Klaus-Dieter
Hallo Thorsten,
mann könnte natürlich die Kundendaten verfälschen oder auch löschen ... Mir geht es um den Aufbau der Liste(n). Es ist kaum möglich, nur mit dem Quelltext eine Testumgebung aufzubauen. Die würde ich aber brauchen, um einen funktionierenden Vorschlag zu unterbreiten.
Viele Grüße Klaus-Dieter

Online-Excel

33 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige