Чтобы вернуть результат вашей функции, вам нужно установить возвращаемое значение функции:
Function GameTimer(FirstStarted, SecondStarted, GameType)
...
GameTimer = 90
End Function
Ваш GameTimer Функция должна выглядеть примерно так:
Function GameTimer(FirstStarted, SecondStarted, GameType)
Dim result
result = 90
If GameType = "Soccer" Then
DateFirstStarted = DateDiff("n", FirstStarted, FormatDateTime(Now(), 0))
DateSecondStarted = DateDiff("n", SecondStarted, FormatDateTime(Now(), 0))
If DateFirstStarted <= 45 Then
result = DateFirstStarted
End If
If DateSecondStarted <= 45 Then
result = DateSecondStarted + 45
End If
End If
GameTimer = result
End Function
Это бы сработало, но это все еще не чистый код.
Во-первых, вы должны избавиться от GameType , потому что вам действительно нужно определить длину периода:
Function GameTimer(FirstStarted, SecondStarted, PeriodInMinutes)
Dim result
result = PeriodInMinutes * 2
DateFirstStarted = DateDiff("n", FirstStarted, FormatDateTime(Now(), 0))
DateSecondStarted = DateDiff("n", SecondStarted, FormatDateTime(Now(), 0))
If DateFirstStarted <= PeriodInMinutes Then
result = DateFirstStarted
End If
If DateSecondStarted <= PeriodInMinutes Then
result = DateSecondStarted + PeriodInMinutes
End If
GameTimer = result
End Function
Использование
CurrentGameTime = GameTimer(FormatDateTime(objLiveCommentary("DateFirstStarted"), 0),
FormatDateTime(objLiveCommentary("DateSecondStarted"), 0),
45)
Следующим шагом будет замена параметров FirstStarted и SecondStarted на Array, чтобы разрешить игры с третями и четвертями.
Массив времен начала периода
Function GameTimer(Periods, PeriodInMinutes)
Dim result
Dim currenttime
Dim i
result = 0 '-- preset to zero --'
For i = 1 To (UBound(Periods))
currenttime = DateDiff("n", Periods(i), FormatDateTime(Now(), 0))
If currenttime > 0 Then
If (currenttime <= PeriodInMinutes * i) Then
result = currenttime + (PeriodInMinutes * (i - 1))
Else
result = PeriodInMinutes * i
End If
End If
Next
GameTimer = result
End Function
Usage
Dim CurrentGameTime
Dim IceHockeyPeriods(3)
IceHockeyPeriods(1) = "2010-04-15 19:30"
IceHockeyPeriods(2) = "2010-04-15 20:00"
IceHockeyPeriods(3) = "2010-04-15 20:30"
CurrentGameTime = GameTimer(IceHockeyPeriods, 20)
Редактировать
Рефакторинг для исправления недостатка, который между периодами возвращает полный рабочий день.