Доброго времени суток! Прошу помочь: В табличке столбец G - дата, в соседнюю ячейку - время, далее - задача. Прошу помочь чтобы при совпадении даты и времени с сейчас срабатывало какое нибудь событие (н-р ячейка Е6 меняла цвет, ну или чтото, дальше сам под себя допилю. У меня этот лист в файле не всегда открыт, потому что то срабатывать (мигать/пищать) будет на соседнем листе. Мысль моя такова - вся процедура срабатывает по Worksheet_Change в ячейке Е6 (там часы) Найденные в инете коды либо вешают Ексель, либа с моими руками не работают)))) Спасибо!
Капец!!! Файл вновь созданный, из макросов только код часов, больше ничего! Не понимаю, как такое могло произойти.... Видимо после такого мне вряд ли кто-то решиться помочь((
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, Подпилил, докрутил. Заработало. Помогите, пожалуйста, чтобы при срабатывании активировалась/выделялась ячейка с датой строки с напоминанием, которое сработало. СПАСИБО!
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 написал: Но, при открытии книги, если время/дата прошло - не срабатывает.