Новости:

Прикрепить к сообщению можно только файлы xls, gif, jpg, rar, zip,7z, bas, frm, cls, doc размером до 150 Кб.

Главное меню

Округление текущего времени кратно 5 мин

Автор MIKHAIL-A-S, 08.12.2014, 19:41

« назад - далее »

MIKHAIL-A-S

Здравствуйте.
Появилась необходимость вставки в активную ячейку текущее время, но округлённое кратно 5 мин.
Я не программист. Нашёл код, который вставляет текущее время в активную ячейку ActiveCell = TimeSerial(Hour(Time), Minute(Time), 0). Есть стандартная формула для конкретной ячейки =ОКРУГЛ(C4*24/(5/60);0)*((5/60)/24) или ActiveCell.FormulaR1C1 = "=ROUND(RC[-1]*24/(5/60),0)*((5/60)/24)". Но как соединить это в один макрос, чтобы при нажатии на кнопку в активную ячейку сразу вставлялось округлённое время?

GWolf

#1
Доброго дня!
Запишите не в активную ячейку, а в переменную:
ActiveCell = TimeSerial(Hour(Time), Minute(Time), 0)
hHh = TimeSerial(Hour(Time), Minute(Time), 0)
ну, а теперь, подставим вместо абсолютных координат ячейки нашу переменную:
ActiveCell.FormulaR1C1 = "=ROUND(RC[-1]*24/(5/60),0)*((5/60)/24)"
ActiveCell.FormulaR1C1 = ROUND( hHh *24/(5/60),0)*((5/60)/24)"
должно работать ...

Протестил:
Sub hhh()
    Dim hhh As Double
   
    hhh = TimeSerial(Hour(Time), Minute(Time), 0)
    ActiveCell.FormulaR1C1 = Format(Round(hhh * 24 / (5 / 60), 0) * ((5 / 60) / 24), "hh:mm:ss")
End Sub


P.S.
Сначала код написал, а потом файл с примером увидел (так тоже бывает) ...
У Вас задача немного иная, поэтому и код будет немного иной:
Sub hhh()
    Dim nR As Long
   
    With ThisWorkbook.ActiveSheet
        nR = 4
        Do
            .Cells(nR, 4).FormulaR1C1 = Format(Round(.Cells(nR, 3).Value * 24 / (5 / 60), 0) * ((5 / 60) / 24), "hh:mm:ss")
            nR = nR + 1
        Loop While .Cells(nR, 3) <> Empty
    End With
End Sub

Private Sub cmb_plus5_Click()' - это на кнопку
    hhh
End Sub
Путей к вершине - множество. Этот один из многих!

MIKHAIL-A-S

Большое спасибо за разъяснение. У меня всё получилось.