我构建了一个警报系统,该警报系统每30分钟24/7触发一次。即使在锁定窗户的情况下,它也会在适当的时间触发,但我很难记下日期和小时。
我正在使用Date = Now
,但取而代之的是实时显示完全不同的内容:
如您在屏幕截图中所见,弹出窗口上显示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
答案 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