Vinnaren i pepparkakshustävlingen!
2014-03-12, 04:09
  #1
Medlem
Hej gänget,

Jag håller på skapa ett litet script som skall hitta datumet för den 6é arbetsdagen på nästkommande månad.
Dvs körs det idag så skall det bli Tisdag den 8é April, dvs första dagen + 6 arbetsdagar.

Hur kan jag göra för att den skall ignorera lördagar och söndagar?

Att hitta första dagen på nästkommande månad är gjord med följande script:
Kod:
CurrentMonth = DatePart("m", Now)
FirstDayOfNextMonth = DateSerial( Year(Date()), CurrentMonth + 1, 1 )
somessagebox "Första dagen nästkommande månad: " & FirstDayOfNextMonth

Några tips?

Mvh
Nawks
Citera
2014-03-12, 04:27
  #2
Medlem
Typiskt, en stund efter post så hittade jag lösningen tack vare https://gist.github.com/sholsinger/921871

Följande kod fungerar ifall någon är intresserad av en liknande lösning.

Kod:
CurrentMonth = DatePart("m", Now)
FirstDayOfNextMonth = DateSerial( Year(Date()), CurrentMonth + 1, 1 )
somessagebox "Dagen D: " & BusinessDayAdd(6,FirstDayOfNextMonth)



Function BusinessDayAdd(delta, dt)
  dim weeks, days, day
  
  weeks = Fix(delta/5)
  days = delta Mod 5
  day = DatePart("w",dt)
  
  If (day = 7) And days > -1 Then
	If days = 0 Then
	  days = days - 2
	  day = day + 2
	End If
	days = days + 1
	day = day - 7
  End If
  If day = 1 And days < 1 Then
	If days = 0 Then
	  days = days + 2
	  day = day - 2
	End If
	days = days - 1
	day = day + 6
  End If
  If day + days > 6 Then days = days + 2
  If day + days < 2 Then days = days - 2
  
  BusinessDayAdd = DateAdd("d", (weeks * 7 + days), dt)
  
End Function
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback