I have an UDF function that convert input array of values to a date range. It works when I call it from Sub but when I try to call it from Excel sheet it shows #Value. How I can fix this behavior?
Function GetWorkingDays(WorkingDaysArr() As Variant, MonthYear As String) As String
Dim Result As String, WorkingDaysCount, ConsecutiveDays, DayStart As Integer
Result = ""
WorkingDaysCount = UBound(WorkingDaysArr) - LBound(WorkingDaysArr)
For i = 0 To WorkingDaysCount Step 1
If Not IsEmpty(WorkingDaysArr(i)) Then
ConsecutiveDays = ConsecutiveDays + 1
If DayStart = 0 Then
DayStart = i + 1
End If
Else
If ConsecutiveDays > 0 Then
Dim DayStartStr, DayEndStr As String
DayStartStr = ConcatDateString(CStr(DayStart), MonthYear)
DayEndStr = ConcatDateString(CStr(i), MonthYear)
If DayStartStr <> DayEndStr Then
Result = Result + DayStartStr + "-" + DayEndStr + ", "
Else
Result = Result + DayStartStr + ", "
End If
End If
DayStart = 0
ConsecutiveDays = 0
End If
Next i
Result = Left(Result, Len(Result) - 2)
GetWorkingDays = Result
End Function
Function ConcatDateString(day As String, MonthYear As String) As String
ConcatDateString = day + "." + MonthYear
If Len(day) = 1 Then
ConcatDateString = "0" + ConcatDateString
End If
End Function
Sub test()
Dim varData(31) As Variant
varData(0) = "val"
varData(1) = "val"
varData(2) = "val"
varData(3) = "val"
varData(4) = "val"
varData(27) = "val"
varData(28) = "val"
varData(30) = "val"
MsgBox GetWorkingDays(varData, "06.23")
End Sub