Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1176to1180
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 Negativ und Positiv mit VBA

Arbeitstage Negativ und Positiv mit VBA
chris
Hallo VBA experten,
ich brauche dringend Hilfe weil ichs nicht hinbekomme:(
Ich brauche aus 2 datums die Anzahl der Arbeitstage.Habe selbst versucht was zu basteln aber bekomme da nur die Arbeitstage die im Plus sind aber keine Negativen zahlen.
Damit meine ict ich brauche z.b eine funktion die mir z.B
Das heutige Datum von einem anderen datum abzieht.
2 Datums sind vorgegeben.
10.09.2010 und 20.09.2010
Heute = der 14.09.2010
jetzt brauche ich als ergebniss für den
10.09.2010 = -3 "ArbeitsTage"
und für den
20.09.2010 = 5 "ArbeitsTage"
Wie bekomme ich das hin mit den Minus Tagen? Meine funktion rechnet nur + Tage
hier meine funktion:

Function Anz_nur_Arbeitstage(Start_Datum, Ende_Datum)
Dim L As Date
Dim wieviele_Tage
If Start_Datum = "" Then GoTo leer
For L = DateSerial(Year(Start_Datum), Month(Start_Datum), Day(Start_Datum)) To DateSerial(Year(  _
_
Ende_Datum), Month(Ende_Datum), Day(Ende_Datum))
If Weekday(L, vbMonday) 
Vielen Dank im voraus gruß Chris

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Arbeitstage Negativ und Positiv mit VBA
14.09.2010 11:32:11
JogyB
Hallo Chris,
wenn das in einem Arbeitsblatt verwendet werden soll, dann einfach NETTOARBEITSTAGE aus den Analysefunktionen.
Kannst Du auch ein VBA verwenden, dazu im VBE einen Verweis auf die Analysefunktionen und einfach
Function Anz_nur_Arbeitstage(sTart As Date, enDe As Date)
Anz_nur_Arbeitstage = Networkdays(sTart, enDe)
End Function
Aber wenn Du es ohne die Analysefunktionen machen willst:
Function Anz_nur_Arbeitstage(ByVal Start_Datum As Date, ByVal Ende_Datum As Date) As Long
Dim L As Date
' True = -1, False = 0 --> -1 * 2 + 1 = -1, 0 * 2 + 1 = 1
For L = Start_Datum To Ende_Datum Step ((Start_Datum > Ende_Datum) * 2 + 1)
If Weekday(L, vbMonday)  Ende_Datum) * 2 + 1)
End Function

Habe den Code etwas gestrafft und vor allem mal für saubere Übergabewerte gesorgt. Hat ja relativ wenig Sinn, hier Variant zu erlauben, was dann spätestens bei der For-Schleife einen Fehler gibt.
Gruß, Jogy
Anzeige
AW: Arbeitstage Negativ und Positiv mit VBA
14.09.2010 12:27:08
chris
Wowo voll Super.
Vielen dank
AW: Arbeitstage Negativ und Positiv mit VBA
14.09.2010 11:38:11
ingoG
Hallo Chris,
ohne es geprüft zu haben, sollte es so funzen:

Function Anz_nur_Arbeitstage(Start_Datum, Ende_Datum)
Dim L As Date
Dim wieviele_Tage
If Start_Datum = "" Then GoTo leer
For L = min(DateSerial(Year(Start_Datum), Month(Start_Datum), Day(Start_Datum)),DateSerial(Year( _
_
Ende_Datum), Month(Ende_Datum), Day(Ende_Datum))) To max(DateSerial(Year( _
Start_Datum), _ Month(Start_Datum), Day(Start_Datum)),DateSerial(Year(Ende_Datum), Month(Ende_Datum), Day _(Ende_Datum)))
If Weekday(L, vbMonday)  _
DateSerial(Year(Ende_Datum), Month(Ende_Datum), Day(Ende_Datum)) then _
wieviele_Tage = -wieviele_Tage;
endif
If wieviele_Tage = "" Then 'Wenn Datum in Zukunft liegt dann
Anz_nur_Arbeitstage = 999 'Datum liegt in Zukunft
Exit Function
End If
Anz_nur_Arbeitstage = wieviele_Tage
Exit Function
leer:
Anz_nur_Arbeitstage = 0
End Function

Gruß Ingo
PS eine Rückmeldung wäre nett
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige