Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao,
ho dimenticato l'ipotesi di "stoppare" il countdown.
Inoltre ho pensato a come azzerare la cella del countdown nel caso la scrittura in altra cella si prolughi oltre la conclusione del countdown.
In un modulo standard ho inserito questo codice:
'---
Option Explicit
Public Const sFoglio As String = "Foglio1"
Public Const sCellaCountDown As String = "A1"
Public rCountDown As Range
Public delay As Double
Public bCountDown As Boolean
Public bStopCountDown As Boolean
Sub StartCountDown()
Dim CountDown As Double
Dim Secondo As Double
Set rCountDown = ThisWorkbook.Worksheets(sFoglio).Range(sCellaCountDown)
On Error Resume Next
bCountDown = True
bStopCountDown = False
delay = rCountDown * 60 * 60 * 24
CountDown = Timer + delay
Secondo = Timer + 1
Do While Timer < CountDown
DoEvents
If Timer > Secondo Then
Secondo = Timer + 1
delay = delay - 1
rCountDown = delay / 60 / 60 / 24
End If
If bStopCountDown Then Exit Sub
Loop
delay = 0
rCountDown = 0
On Error GoTo 0
Call Beep
End Sub
Sub StopCountDown()
bStopCountDown = True
bCountDown = False
delay = 0
' se a seguito dello stop del coutndown _
si vuole azzerare la cella attivare questa _
istruzione
'rCountDown = 0
End Sub
'---
Nel modulo di classe del Foglio1 ho inserito questo codice legato all'evento change:
'---
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If delay = 0 And bCountDown Then
rCountDown = 0
bCountDown = False
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
'---
Qui puoi trovare un file di esempio:
https://www.dropbox.com/s/l2l797649i84v14/CountDown.xlsm?dl=0
Lascio a te ulteriori test per verificarne il funzionamento :)