Я получаю странные числа от функции в VBA.
У меня есть непрерывные формы, где есть кнопка, из которой пользователь может манипулировать суммой часов в текстовом поле. Это текстовое поле находится в нижнем колонтитуле формы.
Мой код выглядит следующим образом:
Private Sub Option39_Click()
Dim time As Double
'calculate time to format
time = 25 / 24
If Option39.Value = True Then
Debug.Print dblTotal
dblTotal = dblTotal + time
Debug.Print dblTotal
Me.txtTotalTeamTotal = FormatUnlimitedHours(dblTotal)
Debug.Print dblTotal
Else
dblTotal = dblTotal - time
Me.txtTotalTeamTotal = FormatUnlimitedHours(dblTotal)
End If
End Sub
из debug.print Я получаю эти значения
3,66611111111111
4,70777777777778
112,986666666667
, которые я надеваю Не понимаю, почему dblTotal
меняет свое значение с 4,70777777777778 to 112,986666666667
Почему было изменено число?
Функция FormatUnlimitedHours () определяется следующим образом:
Public Function FormatUnlimitedHours(time As Variant) As Variant
'function that can have unlimited number of hours in hh:mm:ss format
Dim comma As Integer
Dim hours As Variant
Dim minutes As Variant
'switch to hours format
time = time * 24
If time > 23 Then
comma = InStr(time, ",") - 1
If Not comma < 0 Then
minutes = "0," & Mid(time, comma + 2, Len(time) - comma + 1)
minutes = format(minutes / 24, "hh:mm:ss")
hours = CDbl(Left(time, comma)) + CDbl(Left(minutes, InStr(minutes, ":") - 1))
FormatUnlimitedHours = hours & ":" & Mid(minutes, InStr(minutes, ":") + 1, 5)
Exit Function
Else
'for whole numbers
FormatUnlimitedHours = time & ":00:00"
Exit Function
End If
End If
FormatUnlimitedHours = format(time / 24, "hh:mm:ss")
End Function
начальное значение dblTotal равно определяется при загрузке формы
Private Sub Form_Load()
dblTotal = DSum("sumOfTotalTime", "QueryTime")
End Sub