Egen function returnerer #VALUE
Jeg har en egen function der skal løbe nogle datoer i produktionsplan igennem (Startdatoer i kolonne G og slutdatoer i kolonne I) og teste om der er produktion på en given dato.Hvis der er produktion returneres talværdien 1, hvis ikke returneres talværdien 0.
Nu hvor jeg har fået functionen op at køre, så returnerer den fejlen #VALUE, uden jeg kan regne ud hvorfor.
I første forsøg tester jeg functions direkte i cellen eksempelvis med formlen
Her kommer min function:
' function skal teste om RequestDate er større end starttidspunkt og mindre end sluttidstpunkt - for så er vi i produktion
Dim SDate As Date
Dim EDate As Date
InProduction = 0 ' sætter defaultværdi til 0 , så function returenerer 0 hvis der ikke blev fundet nogen produktion på RequestDate
For i = 1 To UBound(StartDateArray, 1) ' vi løber vores StartDateArray igennem med en For-løkke
If IsDate(StartDateArray(i, 1)) Then
SDate = StartDateArray(i, 1) ' hvis der findes en startdato i StartDateArray, så putter vi værdien i variablen SDate
EDate = EndDateArray(i, 1) ' og så står slutdato på samme plads i EndDateArray
If RequestDate > SDate Then ' hvis større end starttidspunkt
If RequestDate < EDate Then ' hvis større end starttidspunkt og mindre end sluttidstpunkt - så er vi i produktion
InProduction = 1 ' og vi vil returnere værdien 1
End If ' hvis vi er i prod slutter
End If ' hvis større end starttidspunkt slutter
End If ' hvis der findes en dato slutter
Next i
End Function
For fejlfinding har jeg testet hvordan functionen svarer hvis jeg laver functionskaldet fra en makro (VBA-kode).
Når jeg afvikler nedenstående sub-procedure, tester jeg om der er produktion i dag, og skriver talværdien ind i en ønsket celle, og her returnerer proceduren ganske rigtigt talværdien 1
' Her har jeg lavet en sub der skal teste min function (regne ud om datoen i dag har produktion, og med VBA skrive talværdien 0 eller 1 ind i cellen
Dim RDate As Date
Dim SDateArray As Variant
Dim EDateArray As Variant
RDate = Date
SDateArray = Range("G2:G6")
EDateArray = Range("I2:I6")
ActiveSheet.Range("D17").Value = InProduction(RDate, SDateArray, EDateArray)
End Sub
Jeg søger hjælp til at komme videre med fejldinding, så jeg kan kalde functionen direkte fra en celle, og bruge den i min formel.