Дашка, я не пойму что уже сезон контрольных работ снова начался? (Вам надо на форум фрилансеров, или на доску объявлений по решению задач), но на сей раз в виде исключения - держите:
функция для корректного написания обозначения числа в виде текста
Код:
Public Function fnNum2Word(ByVal inp As Long, ByVal fir As String, ByVal sec As String, ByVal many As String) As String
Dim tmp As String
tmp = Format$(inp, "000")
If Len(tmp) > 2 Then tmp = Mid(tmp, Len(tmp) - 1, 2)
Select Case Val(Mid(tmp, 1, 1) & "")
Case 1
Select Case Val(Mid(tmp, 2, 1) & "")
Case 0 To 9
fnNum2Word = many
End Select
Case 0, 2 To 9
Select Case Val(Mid(tmp, 2, 1) & "")
Case 1
fnNum2Word = fir
Case 2 To 4
fnNum2Word = sec
Case 0, 5 To 9
fnNum2Word = many
End Select
End Select
End Function
собственно результат
Код:
Sub RunTask()
Dim inp As String
Const EndOfWorkDay = 18 'Время завершения рабочего дня
Const EndOfSunDay = 24 'Время завершения суток
inp = InputBox("Введите время в формате чч - двухзначное представление часа", "Введите время", Format$(Now(), "hh"))
Debug.Print "До конца рабочего дня осталось " & (EndOfWorkDay - Val(inp)) & " " & fnNum2Word((EndOfWorkDay - Val(inp)), "час", "часа", "часов")
Debug.Print "До конца суток осталось " & (EndOfSunDay - Val(inp)) & " " & fnNum2Word((EndOfSunDay - Val(inp)), "час", "часа", "часов")
End Sub