功能现在无法在Windows锁定上正常工作

时间:2019-04-29 11:43:54

标签: excel vba

我构建了一个警报系统,该警报系统每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 个答案:

答案 0 :(得分:4)

这可能不是 the 错误,但它是具有类似输出的 a 错误:

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。如果分钟数> 30 <30,则您的代码会将Hora的时间缩短为 时间(四舍五入到最近的半小时)-但是,它将如果分钟恰好是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