Имя пользователя:
Пароль:
 

Название темы: Макрос суммы времени
Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: xls я170418.xls
(43.5 Kb, 8 просмотров)

Iska,
ИМХО фэншуйнее написать функцию, а не рутину
Код: Выделить весь код
Function SumTimeK(Atime As Range) As String
    Dim DSumTime As Long, DSumK As Long
    Dim hh As Long, mm As Integer, ss As Integer
    Dim UmAtime As Integer
    
    DSumTime = 0
    DSumK = 0
    
    For Each iAtime In Atime
        mAtime = Split(iAtime, ":")
        UmAtime = UBound(mAtime)
        If UmAtime >= 0 Then
            DSumTime = DSumTime + CLng(mAtime(0)) * 3600
            If UmAtime >= 1 Then DSumTime = DSumTime + CLng(mAtime(1)) * 60
            If UmAtime >= 2 Then DSumTime = DSumTime + CLng(mAtime(2))
            If UmAtime >= 3 Then DSumK = DSumK + CLng(mAtime(3))
        End If
    Next
    
    hh = Int(DSumTime / 3600)
    mm = Int((DSumTime - hh * 3600) / 60)
    ss = DSumTime - hh * 3600 - mm * 60
    
    SumTimeK = IIf(hh < 10, "0" + CStr(hh), CStr(hh)) + ":" + Mid(CStr((100 + mm)), 2, 2) + ":" + Mid(CStr((100 + ss)), 2, 2) + ":" + CStr(DSumK)
End Function
Какая в этом радость: её можно использовать как стандартную функцию Excel, наманер, например, =СУММА(.....). Не помню уже как, её можно сделать доступной для всех таблиц на компьютере.
d22cva, отдаю Вам Ваш файл с функцией. Что такое кадры, я не знаю, подозреваю, что они считаются неправильно. Уточняйте задачу, исправлю

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-04-2017 в 15:05.


Отправлено: 12:44, 18-04-2017 | #3

Название темы: Макрос суммы времени