Функция теперь не работает должным образом на блокировку окон - PullRequest
0 голосов
/ 29 апреля 2019

Я построил систему оповещения, которая срабатывает каждые 30 минут 24/7. Он срабатывает в нужное время, даже когда окна заблокированы, но мне трудно взять дату и час.

Я использую Date = Now, но вместо этого в режиме реального времени он показывает что-то совершенно другое, как это:

Error

Как вы можете видеть на скриншоте, во всплывающем окне написано 27/08/2138 13:30:00, когда должно быть 29/04/2019 13:00:00

Это происходит только в том случае, если компьютер заблокирован. Любое предложение или обходной путь?

Вот код, если он вам нужен, хотя код работает нормально:

Sub Actualizar_Online()

    Dim Inicio As Long, Fin As Long, Fecha As Date, Hora As Date

    AhorroMemoria True
    Declaraciones
    Hora = Now
    If Minute(Hora) > 30 Then
        Hora = TimeSerial(Hour(Hora), 0, 0)
    ElseIf Minute(Hora) < 30 Then
        Hora = TimeSerial(Hour(Hora) - 1, 30, 0)
    End If
    HoraInforme = Hora + Date
    Fecha = Date
    CargarDia
    With wsDB
        Inicio = .Cells.Find("SUR").Row
        Fin = .Cells.Find(Date - 1, After:=.Cells(Inicio, 1)).Row
        If Inicio <> Fin Then .Rows(Inicio & ":" & Fin - 1).Delete
        .Rows(.Cells(.Rows.Count, 1).End(xlUp).Row + 1 & ":" & .Rows.Count).Delete
    End With
    wb.RefreshAll
    Segmentaciones

    wsAlerta.Cells(2, 1) = HoraInforme
    wsAlerta.Calculate
    ComprobarMail
    AhorroMemoria False

End Sub

1 Ответ

4 голосов
/ 29 апреля 2019

Это не может быть ошибка , но это ошибка с похожим выводом:

Hora = Now
If Minute(Hora) > 30 Then
    Hora = TimeSerial(Hour(Hora), 0, 0)
ElseIf Minute(Hora) < 30 Then
    Hora = TimeSerial(Hour(Hora) - 1, 30, 0)
End If

Функция Now возвращает Date + Time. Ваш код будет сокращен с Hora до всего за время (округлено до ближайшего получаса), если минуты> 30 или <30, однако он ничего не сделает, если минуты <strong>точно 30. Затем вы добавляете дату снова

   Date    |  Time |       Now        |        Hora      |   HoraInforme 
29/04/2019 | 11:04 | 29/04/2019 11:04 |       11:00      | 29/04/2019 11:04
29/04/2019 | 12:47 | 29/04/2019 12:47 |       12:30      | 29/04/2019 12:30
29/04/2019 | 13:30 | 29/04/2019 13:30 | 29/04/2019 13:30 | 27/08/2138 13:30

Измените If Minute(Hora) > 30 на If Minute(Hora) >= 30 и измените Hora = Now на Hora = Time

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...