Conto alla rovescia



  • Conto alla rovescia
    di Ilkamalo (utente non iscritto) data: 15/08/2009

    Avrei bisogno di adattare il codice sottoriportato,
    purtroppo coi form non ho nessuna abilità.

    la macro dovrebbe iniziare caricando un form su cui vi è una textbox


    load userform1 'suppongo
    poi invece di
    range("b1").value = 60

    mettere in textbox1 presente in userform1
    il valore 60 (o un valore di mia scelta)
    e poi fare il countdown nella textbox1 invece che nella cella b1

    spero sia possibile, grazie e ciao
     
    Sub ContoRovescia()
    
    'assegniamo ad una cella un valore espresso in secondi che rappresenta il tempo massimo 'iniziale
    Range("B1").Value = 60
    10:  'indice riga a cui si ritorna per continuare il ciclo
    Dim PauseTime, Start  'dimensionamento delle due variabili
    
    PauseTime = 1 ' Imposta la durata espressa in secondi
    Start = Timer ' Imposta l'ora di inizio.
    Do While Timer < Start + PauseTime
    DoEvents ' Passa il controllo ad altri processi.
    Loop
    'quindi ad ogni secondo trascorso temporizzato dal timer si sottrae 1 al valore presente 'nella cella B1 (sotto)
    Range("B1").Value = Range("B1").Value - 1
    
    'inseriamo l'istruzione: se B1 è uguale a zero
    If Range("B1").Value = 0 Then
    
    'avvisiamo con un messaggio
    MsgBox "L'ora X è scoccata"
    Exit Sub  'si esce dalla routine
    End If
    
    'altrimenti (se non siamo a zero in B1), si ritorna alla riga 10
    GoTo 10
    
    End Sub



  • di R (utente non iscritto) data: 19/08/2009

    Per provare l'esempio occorre
    una usarform (userform1) con una textbox (textbox1) ... incolla il codice qui sotto in testa ad un modulo standard e lancia contoallarovescia
    saluti
    r
     
    Option Explicit
    
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    
    Sub ContoAllaRovescia()
    Dim i As Long
    UserForm1.Show vbModeless
    
    For i = 60 To 0 Step -1
    UserForm1.TextBox1.Value = i
    DoEvents
    Sleep 1000
    Next
    
    MsgBox "Fine"
    End Sub