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

Añade tu respuesta

Haz clic para o