cronometro con tempi parziali



  • cronometro con tempi parziali
    di twd (utente non iscritto) data: 24/04/2015 10:39:31

    un saluto a tutto il forum...e ben ritrovati.......
    volevo sapere se sei puo realizzare una sorta di cronometro manuale con vba...mi spiego......
    faccio il cronometrista alle gare di running......allora quando passano i corridori vorrei aprire un file excel e cliccare su un pulsante
    e che nelle celle da a1 ad a 500 il sistema mi memorizzi l'ora esatta di passaggio di ogni concorrente...tipo 10:48:58.470
    non l'ora di start, ma l'ora del passaggio davanti a me...
    praticamente se me ne passano davanti 50 ragazzi io cliccherò 50 volte il bottone.....e incolonnerà i tempi di passaggio...
    il formato sarà ora:minuto:secondo.decimo e il tempo sarà memorizzato nelle celle a1,a2,a3.....ecc....
    si puo ? un saluto e grazie mille.



  • di Lucas87 data: 24/04/2015 11:25:38

    Ciao
    Se ti accontentassi di avere i secondi si potrebbe fare.
    L'orario di sistema non comprende i decimi di secondo



  • di Lucas87 data: 24/04/2015 11:27:06

    Hai provato a cercare in rete qualche software che possa fare al caso tuo?
    Magari non che importi i valori in excel, quello lo puoi fare a mano in un secondo momento.



  • di Traniwebdesign data: 24/04/2015 11:49:29

    i decimi me li metto ad occhio dai...
    si puo fare con l'orario di sistema ?



  • di brontolo (utente non iscritto) data: 24/04/2015 12:12:48

    Con l'orario di Sistema, puoi dare uno sguardo al File Cronometro con tempi parziali (2010).zip




  • di Traniwebdesign data: 24/04/2015 12:21:19

    si , visto grazie mille...ma i decimi non li da ?



  • di brontolo (utente non iscritto) data: 24/04/2015 12:24:19

    @ Traniwebdesign
    Edit. i decimi me li metto ad occhio dai...



  • di Mister_x (utente non iscritto) data: 24/04/2015 13:12:39

    ciao

    con millesimi
    file allegato Millesimi.xlsm
    PS si intende come esempio di utilizzo
    Bottoni inseriti
    Start Stop Passaggi Azzerapassaggi

    ciao
     
    ''Modulo di classe
    Option Explicit
    Public Declare Function SetTimer Lib "user32" ( _
         ByVal HWnd As Long, _
         ByVal nIDEvent As Long, _
         ByVal uElapse As Long, _
         ByVal lpTimerFunc As Long) As Long
    
     Public Declare Function KillTimer Lib "user32" ( _
         ByVal HWnd As Long, _
         ByVal nIDEvent As Long) As Long
    
     Public TimerID As Long
     Public TimerSeconds As Single
    
     Sub StartTimer()
         TimerSeconds = 0.01 ' how often to "pop" the timer.
         TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
     End Sub
    
     Sub EndTimer()
         On Error Resume Next
         KillTimer 0&, TimerID
     End Sub
    
     Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, _
             ByVal nIDEvent As Long, ByVal dwTimer As Long)
             DoEvents
             On Error Resume Next
            Cells(1, 1) = Timer / 86400 ''mettere / 86400
            Cells(1, 2) = Date
     End Sub
    
    
    ''Modulo del foglio
    Option Explicit
    Sub Passaggi()
    On Error Resume Next
    Range("A" & Cells(Rows.Count, "A").End(xlUp).Row + 1).NumberFormat = " hh:mm:ss.000"
    Range("A" & Cells(Rows.Count, "A").End(xlUp).Row + 1) = Range("A1")
    End Sub
    Sub AzzeraPassaggi()
    Range("A4:A100000").ClearContents
    End Sub
    






  • di brontolo (utente non iscritto) data: 24/04/2015 21:11:17

    Sperando che Mister_x non me ne voglia, da ex cronometrista, mi sono divertito a cercare una soluzione alternativa.
    In sostanza, nel File Cronometro con tempi parziali Rev 01.zip, dopo aver fatto partire il Timer tramite il Pulsante "Start", digitando nella cella "B2" il numero di pettorale, verrà indicato il tempo di passaggio.



  • di twd (utente non iscritto) data: 27/04/2015 08:12:19

    grazie a tutti...ma come faccio che ogni volta il debugger mi dice che devo inserire ptrsafe ????



  • di brontolo (utente non iscritto) data: 27/04/2015 11:48:22

    Cit. @ twd:
    ...ma come faccio che ogni volta il debugger mi dice che devo inserire ptrsafe ????

    Ma, hai provato il File:
    - File Cronometro con tempi parziali Rev 01.zip

    Non mi sembra che richieda l'inserimento che menzioni.
    Basta far partire il Timer tramite il Pulsante "Start", digitando nella cella "B2" il numero di pettorale, verrà indicato il tempo di passaggio.

    Colgo l'occasione per ribadire il mio apprezzamento per la soluzione di Mister_x


    brontolo



  • di twd (utente non iscritto) data: 27/04/2015 12:22:35

    certo che ho scaricato quello.......
    io ho win 8 64 bit.........non è che è per quello ?
    ps. pure office è a 64 bit....



  • di Mister_x (utente non iscritto) data: 27/04/2015 15:08:27

    ciao

    mai usato la versione a 64bit e penso di non usarla mai
    comunque mi sembra di ricordare che bisogna cambiare la dichiarazione della funzione
    fai la prova sostituisci in modulo1 le dichiarazioni delle funziomi
    SetTimer e KillTimer
    con queste e vediamo cosa succede

    ciao

    Per Brontolo, grazie per il riscontro


     
    Public Declare PtrSafe Function SetTimer Lib "user32" ( _
         ByVal HWnd As LongLong, _
         ByVal nIDEvent As LongLong, _
         ByVal uElapse As LongLong, _
         ByVal lpTimerFunc As LongLong) As LongLong
    
     Public Declare PtrSafe Function KillTimer Lib "user32" ( _
         ByVal HWnd As LongLong, _
         ByVal nIDEvent As LongLong) As LongLong
    






  • di Mister_x (utente non iscritto) data: 27/04/2015 15:24:53

    riciao

    ho visto adesso che la versione da te installata e' la 2010 e non la 2013
    quindi mi sembra che questi non supporta la LongLong ma solo Long
    la modifica quindi e solamente di aggiungere PtrSafe

    riciao
     
    Public Declare PtrSafe Function SetTimer Lib "user32" ( _
         ByVal HWnd As Long, _
         ByVal nIDEvent As Long, _
         ByVal uElapse As Long, _
         ByVal lpTimerFunc As Long) As Long ''se necessario sostituire con LongPrt
    
     Public Declare PtrSafe Function KillTimer Lib "user32" ( _
         ByVal HWnd As Long, _
         ByVal nIDEvent As Long) As Long  '' anche questo con LongPrt