Страницы: 1
RSS
Напоминание по дате/времени
 
Доброго времени суток!
Прошу помочь:
В табличке столбец G - дата, в соседнюю ячейку - время, далее - задача.
Прошу помочь чтобы при совпадении даты и времени с сейчас срабатывало какое нибудь событие (н-р ячейка Е6 меняла цвет, ну или чтото, дальше сам под себя допилю.
У меня этот лист в файле не всегда открыт, потому что то срабатывать (мигать/пищать) будет на соседнем листе.
Мысль моя такова - вся процедура срабатывает по Worksheet_Change в ячейке Е6 (там часы)
Найденные в инете коды либо вешают Ексель, либа с моими руками не работают))))
Спасибо!
Изменено: evg_glaz - 18.04.2025 14:25:41
 
Ваш файл обрушил мой офис 8-0
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Ваш файл обрушил мой офис
не уверен- не открывай  8)
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
Ваш файл обрушил мой офис
Капец!!! Файл вновь созданный, из макросов только код часов, больше ничего!
Не понимаю, как такое могло произойти....
Видимо после такого мне вряд ли кто-то решиться помочь((
 
Пробуйте, в станадртній модуль:
Код
Option Explicit
Dim CheckTimer      As Date

Sub CheckTask()
    Dim i           As Long
    Dim rDate    As Date
    Dim rTime    As Date

    Dim curDate As Date
    curDate = Date

    Dim curTime As Date
    curTime = Time

    With ThisWorkbook.Worksheets("КАЛЕНДАРЬ")

        For i = 9 To .Cells(.Rows.Count, "G").End(xlUp).Row
            rDate = .Cells(i, "G").Value
            rTime = .Cells(i, "H").Value

            If IsDate(rDate) And IsDate(rTime) Then

                If rDate = curDate And curTime >= rTime And curTime < rTime + TimeSerial(0, 1, 0) Then
                    MsgBox "Время вышло! Примите меры Уважаемый!", vbCritical
                    Exit For
                End If

            End If

        Next i

    End With

    StartChecking
End Sub

Sub StartChecking()

    On Error Resume Next
    Application.OnTime EarliestTime:=CheckTimer, Procedure:="CheckTask", Schedule:=False
    On Error GoTo 0

    CheckTimer = Now + TimeSerial(0, 1, 0)
    Application.OnTime EarliestTime:=CheckTimer, Procedure:="CheckTask", Schedule:=True
End Sub

Sub StopChecking()

    On Error Resume Next
    Application.OnTime EarliestTime:=CheckTimer, Procedure:="CheckTask", Schedule:=False
    On Error GoTo 0
End Sub
Сами далее докрутите, думаю у вас получится. Удачи.
 
MikeVol, ничего не происходит
Изменено: evg_glaz - 21.04.2025 14:08:31
 
evg_glaz, А у меня всё происходит. Вы должны запустить макрос StartChecking.
 
MikeVol, заполнил строки ниже - заработал код. Но, при открытии книги, если время/дата прошло - не срабатывает.
Код
Private Sub Workbook_Open()
    StartChecking
    CheckTask
End Sub
не помогает


 
 
Цитата
написал:
при совпадении даты и времени с сейчас срабатывало какое нибудь событие (н-р ячейка Е6 меняла цвет,
Можно использовать Условное форматирование с формулой типа
Код
=ТДАТА()>=(A5+B5)
Использовать строгое равенство не продуктивно - триггер пропадает слишком быстро (
 
IKor, как вариант, но в общей книге лист Календарь всегда не активен, могу пропустить событие
 
MikeVol, Подпилил, докрутил. Заработало. Помогите, пожалуйста, чтобы при срабатывании активировалась/выделялась ячейка с датой строки с напоминанием, которое сработало.
СПАСИБО!
 
Цитата
evg_glaz написал:
либа с моими руками не работают
;)
Код
                If cellDate = currentDate And currentTime >= cellTime And currentTime < cellTime + TimeSerial(0, 1, 0) Then
                    Application.Goto .Range(.Cells(i, "G"), .Cells(i, "H"))
                    Exit For
                End If
А в модуле ЭтаКнига
Код
Option Explicit

Private Sub Workbook_Open()
    StartChecking
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    StopChecking
End Sub

Цитата
evg_glaz написал:
Но, при открытии книги, если время/дата прошло - не срабатывает.
В условие темы данного момента небыло сказано.
Изменено: MikeVol - 22.04.2025 19:01:06 (Дополнил ответ)
 
MikeVol, спасибо большое!!!
Страницы: 1
Читают тему
Наверх