Добрый день. Возникла необходимость на производстве в замере времени. Задачу поставили следующею. Оператор изготавливает одну деталь за определенное время. Это время вносится в таблицу, потом в таблицу вносится количество деталей в заказе и таймер начинает отсчет от этого значения(количество деталей * на время одной детали). Данные должны сохраняться. Смысл следующий. Если оператор не успевает по истечению таймера, необходимо понять почему. Было бы хорошо если по истечению таймера ячейка подсвечивалась или мигала. Спасибо.
потом в таблицу вносится количество деталей в заказе - это просто
таймер начинает отсчет от этого значения(количество деталей * на время одной детали) - два варианта или реальный таймер макросом , что не сильно эффективно, или формула сравнения времени по плану с текущим и пересчет периодически макросом.
Данные должны сохраняться - ну если сохранить, то сохранятся
Если оператор не успевает по истечению таймера, необходимо понять почему. - это точно Excel? на таких данных, не сделает
Было бы хорошо если по истечению таймера ячейка подсвечивалась или мигала. - подсвечивалась элементарно , например условным форматированием, а вот мигала - можно макросом, но также как и с таймером не сильно эффективно.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime Next_recalc, "recalculate", , False
End Sub
Private Sub Workbook_Open()
Application.OnTime Now, "recalculate"
End Sub
и в модуль
Код
Public Next_recalc As Date
Sub recalculate()
Const P = "00:00:10"
Application.Calculate
Next_recalc = Now + CDate(P)
Application.OnTime Next_recalc, "recalculate"
End Sub
пересчет каждые 10 секунд. Период можно задать тот который вам нужен, все зависит от операций.
Иван Шишкин, я не понимаю что вы хотите. ибо то что написано в первом посте, несколько отличается от того что тут.
Сделайте свою таблицу, как вы её представляете, опишите, что , когда , куда и кем заносится , когда должен отсчет включаться и где отражаться. Также обратите внимание на то что чем чаще обновление, тем чаще будет "моргать" приложение.
кнопка старт/ кнопка стоп - это разово или типа пуза продолжить? Если файл закрыт то счет типа продолжается или ??? Здесь отсчет таймера из ячейки Е к нулю - E Это Опыт работы(месяцев), если он идет по секундно то ....
кнопка старт/ кнопка стоп - это разово один раз нажал пошел отсчет , второй раз нажал остановилось и больше не отсчитывает Если файл закрыт то счет на секундомере и таймере обнуляется Здесь отсчет таймера из ячейки L к нулю - L Это общее время.
Sub myRefresh()
Dim y As Long
With ActiveSheet
y = .Cells(.Rows.Count, 1).End(xlUp).Row
If y = 1 Then Exit Sub
Dim arI As Variant
Dim arR As Variant
arI = .Range(.Cells(1, "I"), .Cells(y, "I"))
arR = .Range(.Cells(1, "R"), .Cells(y, "R"))
For y = 3 To UBound(arI, 1)
arI(y, 1) = IIf(IsEmpty(arR(y, 1)), Empty, Now - arR(y, 1))
Next
Application.EnableEvents = False
Range("I1").Resize(UBound(arI, 1), 1) = arI
Application.EnableEvents = True
If Range("A1").Value = Empty Then 'Остановка, если А1 непусто.
Application.OnTime Now + TimeSerial(0, 0, 1), "myRefresh"
End If
End With
End Sub
Это в модуль листа.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rJ As Variant
On Error Resume Next
Set rJ = Intersect(Target, Columns("J:J"), ActiveSheet.UsedRange)
On Error GoTo 0
If Not rJ Is Nothing Then
Dim cl As Range
Application.EnableEvents = False
For Each cl In rJ
Cells(cl.Row, "R").Value = IIf(cl.Value, Now, Empty)
Next
Application.EnableEvents = True
End If
End Sub
Для запуска секундомера заполнить 1 в столбец J. Для обновления запустить макрос myRefresh. Для остановки написать 1 в ячейку А1.
Сделано для столбцов I, J. Для других столбцов, я не понял, что на что надо умножить.