Страницы: 1
RSS
Таймер отсчета времени, согласно сумме нескольких чисел из разных ячеек
 
Добрый день.
Возникла необходимость на производстве в замере времени. Задачу поставили следующею.
Оператор изготавливает одну деталь за определенное время. Это время вносится в таблицу, потом в таблицу вносится количество деталей в заказе и таймер начинает отсчет от этого значения(количество деталей * на время одной детали). Данные должны сохраняться.  Смысл следующий. Если оператор не успевает по истечению таймера, необходимо понять почему. Было бы хорошо если по истечению таймера ячейка подсвечивалась или мигала.
Спасибо.
Изменено: Иван Шишкин - 16.09.2021 08:02:36
 
Иван Шишкин, Вопрос то у вас о чем?
  • Это время вносится в таблицу, - элементарно
  • потом в таблицу вносится количество деталей в заказе - это просто
  • таймер начинает отсчет от этого значения(количество деталей * на время одной детали) - два варианта или реальный таймер макросом , что не сильно эффективно, или формула сравнения времени по плану с текущим и пересчет периодически макросом.
  • Данные должны сохраняться - ну если сохранить, то сохранятся
  • Если оператор не успевает по истечению таймера, необходимо понять почему. - это точно Excel? на таких данных, не сделает
  • Было бы хорошо если по истечению таймера ячейка подсвечивалась или мигала. - подсвечивалась элементарно , например условным форматированием, а вот мигала - можно макросом, но также как и с таймером не сильно эффективно.
Изменено: БМВ - 16.09.2021 08:10:16
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
формула сравнения времени по плану с текущим и пересчет периодически макросом
Если не затруднит можете описать пошагово. или где взять данный макрос.
Изменено: Иван Шишкин - 16.09.2021 08:36:02
 
например в модуль книги
Код
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 секунд. Период можно задать тот который вам нужен, все зависит от операций.
По вопросам из тем форума, личку не читаю.
 
Цитата
Иван Шишкин написал:
макрос
простейший вариант пересчета по кнопке (приложил) с кодом типа:
Код
Sub time_()
Range("диапазон_пересчета").Calculate
End Sub
более интересный вариант в ответе выше #4
Изменено: andylu - 16.09.2021 09:15:22
 
Цитата
БМВ написал:
например в модуль книги
А можно пример.
Изменено: Иван Шишкин - 16.09.2021 09:17:30
 
Цитата
Иван Шишкин написал:
Если не затруднит создайте пример пожалуйста.
как бы,это Вас изначально должно не затруднить создать пример :-)
По вопросам из тем форума, личку не читаю.
 
Нашел вот такой вариант. Все хорошо. Но шаг расчета времени там 20 минут. Можно это как-то изменить.
 
Цитата
Иван Шишкин написал:
Но шаг расчета времени там 20 минут. Можно это как-то изменить.
ну не 20мин , а 15секунд
Код
Application.OnTime Now() + TimeValue("00:00:15"), "Auto_Open"
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
ну не 20мин , а 15секунд
Я не про это имел в виду))) Но в Любом случае спасибо. А возможно сделать как в секундомере чтобы каждый круг записывался в новую ячейку?
 
можно все
особенно, когда понятно и просто написано что нужно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Согласен что все можно когда знаешь как. К сожалению у меня пока мало знаний. На форуме пытаюсь их подтянуть.
Изменено: vikttur - 16.09.2021 11:24:18
 
Цитата
БМВ написал:
ну не 20мин , а 15секунд
Можно вас попросить. В этом посте (https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=108016&a...)вы сделали таблицу. Можно добавить еще обратный отсчет времени. Который будет отсчитывать время которое находится в ячейке Н. И будет то что мне нужно в конечном итоге. Спасибо
Изменено: Иван Шишкин - 16.09.2021 13:42:27
 
Иван Шишкин,  я не понимаю что вы хотите. ибо то что написано в первом посте, несколько отличается от того что тут.

Сделайте свою таблицу, как вы её представляете, опишите, что , когда , куда и кем заносится , когда должен отсчет включаться и где отражаться. Также обратите внимание на то что чем чаще обновление, тем чаще будет "моргать" приложение.
По вопросам из тем форума, личку не читаю.
 
Цитата
Иван Шишкин написал:
Согласен что все можно когда
понятны условия задачи и задача имеет решение
пока нет условий задачи - решить ее не возможно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
БМВ написал:
я не понимаю что вы хотите. ибо то что написано в первом посте, несколько отличается от того что тут.
Надеюсь понятно описал в файле Exel.  
Изменено: Иван Шишкин - 17.09.2021 12:59:21
 
Цитата
Иван Шишкин написал:
Надеюсь понятно описал
Не исключено, хотя лично у меня возникли сложности с пониманием, зачем может понадобится сумма произведения кода SAP и участка.
 
Цитата
МатросНаЗебре написал:
зачем может понадобится сумма произведения
это не важно на фоне разговора о секундомерах)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
МатросНаЗебре написал: ...зачем может понадобится сумма произведения кода SAP и участка
Поправил))) Немного проглядел там умножение K3*J3
Изменено: vikttur - 17.09.2021 13:28:11
 
кнопка старт/ кнопка стоп - это разово или типа пуза продолжить?
Если файл закрыт то счет типа продолжается или ???
Здесь отсчет таймера из ячейки Е к нулю - E Это Опыт работы(месяцев), если он идет по секундно то ....
По вопросам из тем форума, личку не читаю.
 
кнопка старт/ кнопка стоп - это разово один раз нажал пошел отсчет , второй раз нажал остановилось и больше не отсчитывает
Если файл закрыт то счет на секундомере и таймере  обнуляется
Здесь отсчет таймера из ячейки L к нулю - L Это общее время.
Изменено: vikttur - 17.09.2021 14:16:31
 
Это в стандартный модуль.
Код
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. Для других столбцов, я не понял, что на что надо умножить.
 
Цитата
МатросНаЗебре написал:
Это в стандартный
Огромное спасибо. всем. Вроде добился чего хотел.
Страницы: 1
Наверх