Hej, För det första tycker jag man skall använda ett Visa skift funktion
Jag håller på att göra en funtion på jobbet i exel 2010, där det skall komma upp vilket skift som har gjort arbetet beroende på vilket datum som står i en kolumn. Funka bra, men när det kommer till udda veckor, så byter den inte skiftgången. Ena veckan jobbar B-skift sent. Andra veckan jobbar B-skift tidigt. Hela tiden visar den den sena tiden. Hoppas någon kan rätta till felet som finns här nedan.
Function kollaskift(ByVal Value As Date)
Dim result As String
Dim d1 As Date
Dim d2 As Long
d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
week = Int((d1 - d2 + Weekday(d2) + 5) / 7)
hh = Hour(Value)
mm = Minute(Value)
dd = Weekday(Value, vbMonday)
Select Case week
Case Is = 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 37, 40, 42, 44, 46, 48, 50, 52 'Jämna veckor
'Jämna veckor
If hh >= 6 And hh < 14 Then
result = "A"
Else
If hh >= 14 And hh < 23 Then
result = "B"
End If
End If
Case Is = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53 'Udda veckor
'Udda veckor
If hh >= 6 And hh < 14 Then
result = "B"
Else
If hh >= 14 And hh < 23 Then
result = "A"
End If
End If
End Select
'Söndag Kväll
If dd = 7 Then
If hh >= 23 And mm >= 24 Then
result = "Natt"
End If
End If
'Måndag - Fredag
If dd >= 1 And dd < 6 Then
'Nattskift
If hh >= 0 And hh < 6 Then
result = "Natt"
End If
End If
If hh >= 23 Then
result = "Natt"
End If
If result = "" Then result = "Helg"
kollaskift = result
End Function
Sv: Visa skift funktion
variabelnamn som säger vad det är man skickar in.
Value tror jag är ett reserverat ord.
Function kollaskift(ByVal InDate As Date)
För det andra ska du väl använda datumet du skickar in i funktionen.
Ser inte att du gör det.
Byt ut d1 mot InDate eller låt d1 få värdet InDate
d1 = InDate
d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
week = Int((d1 - d2 + Weekday(d2) + 5) / 7)
Sen finns det en inbyggd funktion som tar fram veckonummer
week = CInt(Format(InDate, "ww", 2))
Om du stegar koden så ser du att variabeln week alltid får värdet 52