Ptoblemas con un programa de cuenta regresiva
Tengo un programa muy sencillo que me dice cantas días minutos y segundos faltan entre la fecha actual y una que yo especifico en el código del programa y anda bien el código es el siguiente:
Private Sub Timer1_Timer()
Dim FechaActual As Date
Dim FechaLimite As Date
Dim segundos As Long
Dim dia As Long
Dim hora As Long
Dim minuto As Long
'FechaLimite = CDate("05/08/2016 19:59:54")
FechaLimite = CDate("03/12/2015 12:03:00")
FechaActual = Now
segundos = DateDiff("s", FechaActual, FechaLimite)
If segundos >= 86400 Then
dia = Val(segundos / 86400)
segundos = segundos Mod 86400
End If
If segundos >= 3600 Then
hora = Val(segundos / 3600)
segundos = segundos Mod 3600
End If
If segundos >= 60 Then
minuto = Val(segundos / 60)
segundos = segundos Mod 60
End If
lblDias.Caption = dia
lblHoras.Caption = hora
lblMinutos.Caption = minuto
lblSegundos.Caption = segundos
End Sub
Sobre este programa lo mejore para que el usuario pueda crear un nuevo evento (guardando la fecha limite en una base de datos.
En el código que voy a poner la fechalimite esta puesta directamente en el código para que les sea más fácil pero si quieren que les adjunte los programas no hay problema. El fallo que hay en este programa es que cuando falta menos de 1 minuto en lugar de figurar minutos 0 y que los sogundos sigan bajando, los minutos siguen en 1. Aún así cuando las dos fechas son iguales el programa hace lo que esta progrmado para esa situación
El codigo es:
Private Sub Timer1_Timer()
On Error GoTo Error
Dim FechaBase As String
FechaBase = diabase & "/" & mesbase & "/" & anobase & " " & horabase & ":" & minutobase & ":" & segundobase
FechaLimite = CDate(FechaBase)
'MsgBox FechaLimite
FechaLimite = CDate("03/12/2015 11:59:00")
'FechaLimite = CDate("05/08/2016 22:00:00")
FechaActual = Now
segundos = DateDiff("s", FechaActual, FechaLimite)
If segundos >= 86400 Then
dia = Val(segundos / 86400)
segundos = segundos Mod 86400
End If
If segundos >= 3600 Then
hora = Val(segundos / 3600)
segundos = segundos Mod 3600
End If
If segundos >= 60 Then
minuto = Val(segundos / 60)
segundos = segundos Mod 60
End If
lblDias.Caption = dia
lblHoras.Caption = hora
lblMinutos.Caption = minuto
lblSegundos.Caption = segundos
If (lblDias.Caption = 0) And (lblHoras.Caption = 0) And (lblMinutos.Caption = 0) Or (lblSegundos.Caption < 0) Then
lblDias.Caption = ""
lblHoras.Caption = ""
lblMinutos.Caption = ""
lblSegundos.Caption = ""
Label1.Caption = evento & " ya comenzo"
Timer1.Enabled = False
End If