Anzeige
Archiv - Navigation
1680to1684
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

Arbeitstage subtrahieren

Arbeitstage subtrahieren
15.03.2019 18:25:38
Susann
Hallo Forum,
vielleicht kann mir jemand bei der Umsetzung meiner Idee helfen, denn ich steh etwas auf dem Schlauch.
Was möchte ich gerne machen? Ich habe in jeder 5. Zeile einen Datumswert in Spalte H, diesen kopiere ich eine Zelle tiefer. Von diesem Datumswert sollen im ersten Schritt 15 Arbeitstage abgezogen und in Spalte G kopiert werden. Wenn ich in der ersten Zeile im Beispiel eine -15 eintrage zum abziehen, erhalte ich jedoch einen Laufzeitfehler 1004 (Workday Eigenschaft kann nicht zugeordnet werden). Was mache ich falsch?
Wenn ich den Makrorekorder bemühe, zeigt er mir =WORKDAY(RC[1],-15) an. Wie kann ich das auf meinen Code umsetzen? Macht es eventuell Sinn das Ganze als For-Schleife zu schreiben?
Hier ein Auszug aus dem Code:
...
Case 8
.Cells(i, 8).Offset(1, 0).Value = .Cells(i, 8).Value
.Cells(i + 1, 7).Value = .Cells(WorksheetFunction.WorkDay(i + 1, 15), 8).Value
.Cells(i + 1, 6).Value = .Cells(WorksheetFunction.WorkDay(i + 1, 10), 7)
.Cells(i + 1, 5).Value = .Cells(WorksheetFunction.WorkDay(i + 1, 2), 6)
.Cells(i + 1, 4).Value = .Cells(WorksheetFunction.WorkDay(i + 1, 5), 5).Value
.Cells(i + 1, 3).Value = .Cells(WorksheetFunction.WorkDay(i + 1, 14), 4).Value
.Cells(i + 1, 2).Value = .Cells(WorksheetFunction.WorkDay(i + 1, 18), 3).Value
End Select
Grüße
Susann

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitstage subtrahieren
15.03.2019 18:29:33
Alexandra
Hi Susann,
lade bitte deine Datei hoch, dann kann Dir leichter geholfen werden!
LG
Alexandra
AW: Arbeitstage subtrahieren
15.03.2019 18:29:34
Alexandra
Hi Susann,
lade bitte deine Datei hoch, dann kann Dir leichter geholfen werden!
LG
Alexandra
Wie groß (und: Was?) ist denn Dein i?
17.03.2019 06:38:55
lupo1
Du verwendest i sowohl für Zeilennummern als auch für Datümer. Datümer haben aber einen Wert von z.Zt. ~43000.
Willst Du hingegen i - 15 rechnen, und i ist kleiner als 76, gibt es falsche Ergebnisse, und ist i kleiner als 15, gibt es Fehler.
AW: Arbeitstage subtrahieren
19.03.2019 23:13:41
Susann
Hallo Alexandra, hallo Lupo1,
danke für eure Antworten. Ich habe euch eine Beispieldatei erstellt, vielleicht wird es dadurch etwas klarer was ich vorhabe. In Tabelle1 Zeile 5, 10 und 15 befindet sich jeweils das Ursprungsdatum. Das Datum kopiere ich mit Offset eine Zeile tiefer. Von diesem Datum aus sollen Arbeitstage subtrahiert bzw. addiert werden. In Beispiel 1 das Datum in Spalte G soll - 18 Arbeitstage zu Spalte H sein. In Spalte F -10 Tage zu Spalte G usw. Ich verstehe noch nicht wieso er mir das Datum nicht kopiert bzw. warum keine negativen Zahlen angenommen werden.
@Lupo1: Ich nutze i eigentlich nur als Zeilenzähler. Ich habe es jetzt auf lngI umbenannt.
Ich hoffe es ist verständlich.
LG
Susann
https://www.herber.de/bbs/user/128515.xlsm
Anzeige
Ich hatte das i doch erklärt ... und außerdem ...
20.03.2019 09:18:14
lupo1
... mache ich keine .xlsm auf.
Nimm .xlsx (mit Deinem - in Zellen oder einer Textbox abgelegten - Code).
AW: Ich hatte das i doch erklärt ... und außerdem ...
20.03.2019 11:04:23
Torsten
Hallo Susann,
da ist ein bisschen Syntaxfehler drin. Deswegen funktioniert es nicht.
Ich habe dir mal am Beispiel Case 8 veraendert, wie es funktioniert:

Case 8
'Beispiel 1
'Arbeitstage sollen hier subtrahiert werden, -15, -10 usw.
.Cells(lngI, 8).Offset(1, 0).Value = .Cells(lngI, 8).Value
.Cells(lngI + 1, 7) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 8), - _
15)
.Cells(lngI + 1, 6) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 7), - _
10)
.Cells(lngI + 1, 5) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 6), -2) _
.Cells(lngI + 1, 4) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 5), -5) _
.Cells(lngI + 1, 3) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 4), - _
14)
.Cells(lngI + 1, 2) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 3), - _
18)
End Select
Gruss Torsten
Anzeige
AW: Arbeitstage subtrahieren
20.03.2019 11:05:48
Torsten
Hallo Susann,
da ist ein bisschen Syntaxfehler drin. Deswegen funktioniert es nicht.
Ich habe dir mal am Beispiel Case 8 veraendert, wie es funktioniert:
Case 8
'Beispiel 1
'Arbeitstage sollen hier subtrahiert werden, -15, -10 usw.
.Cells(lngI, 8).Offset(1, 0).Value = .Cells(lngI, 8).Value
.Cells(lngI + 1, 7) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 8), -  _
_
15)
.Cells(lngI + 1, 6) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 7), -  _
_
10)
.Cells(lngI + 1, 5) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 6), -2) _
_
.Cells(lngI + 1, 4) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 5), -5) _
_
.Cells(lngI + 1, 3) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 4), -  _
_
14)
.Cells(lngI + 1, 2) = WorksheetFunction.WorkDay(.Cells(lngI + 1, 3), -  _
_
18)
End Select

Gruss Torsten
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige