rendere macro attiva apertura foglio



  • rendere macro attiva apertura foglio
    di maxmi data: 16/05/2013 03:01:36

    Ciao a tutti
    ho cretato questa macro per fare comparire
    l'ora corrente su una cella.
    Mi potete dire come attivarla all'apertura del foglio,
    visto che se no l'ora rimane ferma se non attivo la macro
    grazie

    'inserimento ora automatica
    Sub CLOCK()
    If ThisWorkbook.Worksheets("Rapportino").Range("F8").Value = "X" Then Exit Sub
    ThisWorkbook.Worksheets("Rapportino").Range("F8").Value = Format(Now, "hh:mm:ss AM/PM")
    Application.OnTime Now + TimeSerial(0, 0, 1), "clock"
    End Sub



  • di totygno71 data: 16/05/2013 08:23:52

    Se vuoi che si attiva ogni cvolta che attivi il foglio metti la macro nell'evento activate del foglio desiderato:

    Private Sub Worksheet_Activate()

    End Sub

    se vuoi che si attivi all'apertura del file invece:
    Private Sub Workbook_Open()

    End Sub

    Ciao



  • di maxmi data: 16/05/2013 09:24:42

    ciao non sono un grande esperto di excel
    e lo sto imparando da pochi mesi.

    Ho messo la macro cosi ma mi da errore quando apro il file
    mi dice che è impossibile trovare la macro clok

    Private Sub Workbook_Open()
    If ThisWorkbook.Worksheets("Rapportino").Range("F8").Value = "X" Then Exit Sub
    ThisWorkbook.Worksheets("Rapportino").Range("F8").Value = Format(Now, "hh:mm:ss AM/PM")
    Application.OnTime Now + TimeSerial(0, 0, 1), "clock"

    End Sub



  • di totygno71 data: 16/05/2013 09:36:04

    apri l'edito vba
    selezioni il voglio desiderato e incolla il codice:
     
    Private Sub Worksheet_Activate()
    If Not [F8] = "X" Then
    [F8] = Format(Now, "hh:mm:ss AM/PM")
    End If
    End Sub



  • di Vecchio Frac data: 16/05/2013 10:34:28

    L'istruzione
    Application.OnTime Now + TimeSerial(0, 0, 1), "clock"
    fa partire ogni secondo la procedura "clock" he deve naturalmente esistere ed essere visibile (quindi deve essere dichiarata Public dentro un modulo). Altrimenti genera errore.





  • di maxmi (utente non iscritto) data: 16/05/2013 10:47:44

    ok adesso funziona, ma rimane ferma l'ora
    per fare in modo che continui a girare ?



  • di totygno71 (utente non iscritto) data: 16/05/2013 10:54:03

    Ma tu vuoi un orologio in una cella???
    Non era questa la richiesta.... e poi che senso dovrebbe avere?



  • di maxmi (utente non iscritto) data: 16/05/2013 11:16:00

    scusa se non sono satto chiaro,
    si voglio l'orogio dentro una cella esattamente la F8
    se questo è fattibile
    mi serve per il progetto che sto custruendo.



  • di Vecchio Frac data: 16/05/2013 11:26:48

    Ah ecco... devi schedulare l'operazione.
     
    'codice da incollare in un modulo
    'l'orologio si avvia lanciando "start_timer", si rinfresca ogni secondo e si deve fermare lanciando "stop_timer"
    Option Explicit
    
    Public RunWhen As Double
    Public cRunIntervalSeconds As Integer    'secondi
    Public Const cRunWhat = "orologio"
    
    Sub Start_Timer()
        cRunIntervalSeconds = 1
        RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
        Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, Schedule:=True
    End Sub
    
    Sub orologio()
        [F8] = Format(Now, "hh:nn:ss")
        Start_Timer  ' Reschedule the procedure
    End Sub
    
    Sub Stop_Timer()
        On Error Resume Next
        Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, Schedule:=False
    End Sub






  • di maxmi data: 16/05/2013 18:17:31


    ok funziona
    grazie a totygno71
    grazie Vecchio Frac

    scusate se non sono sempre chiaro nelle mie richeste
    a 50 anni mi è venuta la voglia di
    imparare qualcosa di piu excel, solo per passione
    visto che i miei studi si sono fermati alle medie
    e non mastico tanto inglese
    grazie di cuore



  • di Vecchio Frac data: 16/05/2013 18:28:39

    Non c'è bisogno di scusarsi... anzi ammiro la voglia di mettersi in gioco per apprendere cose nuove.
    Non è affatto questione di titoli di studio (però la conoscenza dell'inglese aiuterebbe... per fortuna ci sono molte risorse in italiano).





  • di totygno71 data: 16/05/2013 18:33:32

    per quel poco che ho fatto... è stato un piacere aiutarti_
    Ciao



  • di maxmi data: 18/05/2013 03:11:33

    Ciao prima di chiudere la discussione volevo
    chiedere un'ultima cosa.
    Ho creato 12 fogli come i mesi, e su una cella (I1)
    faccio comparire l'ora con questa macro su modulo.
    Sub CLOCK()
    ThisWorkbook.Worksheets("Gennaio").Range("I1").Value = Format(Now, "hh:mm:ss")
    Application.OnTime Now + TimeSerial(0, 0, 1), "clock"
    End Sub

    Vorrei estendere la stessa cosa su tutti fogli.
    Non essendo esperto, ma con tanto voglio di imparare
    ho inserito gli altri mesi cosi, e funziona, ma se aggiungo marzo
    mi va in debag.
    Ho letto la guida ma sinceramente mi sto perdendo.

    Sub CLOCK()
    ThisWorkbook.Worksheets("Gennaio").Range("I1").Value = Format(Now, "hh:mm:ss")
    ThisWorkbook.Worksheets("Febbraio").Range("I1").Value = Format(Now, "hh:mm:ss")
    ThisWorkbook.Worksheets("Aprile").Range("I1").Value = Format(Now, "hh:mm:ss")
    ThisWorkbook.Worksheets("Maggio").Range("I1").Value = Format(Now, "hh:mm:ss")
    ThisWorkbook.Worksheets("Giugno").Range("I1").Value = Format(Now, "hh:mm:ss")
    ThisWorkbook.Worksheets("Luglio").Range("I1").Value = Format(Now, "hh:mm:ss")
    ThisWorkbook.Worksheets("Agosto").Range("I1").Value = Format(Now, "hh:mm:ss")
    ThisWorkbook.Worksheets("Settembre").Range("I1").Value = Format(Now, "hh:mm:ss")
    ThisWorkbook.Worksheets("Ottobre").Range("I1").Value = Format(Now, "hh:mm:ss")
    ThisWorkbook.Worksheets("Novembre").Range("I1").Value = Format(Now, "hh:mm:ss")
    ThisWorkbook.Worksheets("Dicembre").Range("I1").Value = Format(Now, "hh:mm:ss")
    Application.OnTime Now + TimeSerial(0, 0, 1), "clock"
    End Sub



  • di Vecchio Frac data: 18/05/2013 10:55:04

    Quale errore precisamente ti viene restiuito?
    Probabilmente il nome del foglio non è esattamente "Marzo", ma c'è uno spazio di troppo, come in " Marzo" oppure "Marzo " e questo produce l'errore.







  • di Vecchio Frac data: 18/05/2013 11:03:01

    Ti suggerisco un costrutto più elegante al posto della sfilza di codice che hai proposto.
     
    sub clock()
    dim ws as worksheet
        for each ws in sheets(array("gennaio","febbraio","marzo","aprile","maggio","giugno", _
             "luglio","agosto","settembre","ottobre","novembre","dicembre"))
            ws.[I1]= Format(Now, "hh:mm:ss") 
        next
        Application.OnTime Now + TimeSerial(0, 0, 1), "clock" 
    end sub






  • di maxmi data: 18/05/2013 11:19:42

    mi da errore,
    indicedi rum - time 9
    Ho visto che entranto nel finestra programmazione a sinistra dove
    si vedono tutti i folgli, il
    foglio di marzo ( che è tra parentesi )
    ha un spazzio in piu.
    Come faccio a correggerlo
    grazie Vecchio Frac



  • di maxmi data: 18/05/2013 11:35:36

    ho usato il tuo codice, ma mi da lo stesso errore
    il problema è proprio quello spazio in piu.
    Se tolgo dal tuo codice marzo, funziona.
    Per risolvere ho cancellato il mese di marzo come foglio
    e ne ho creato una nuovo.
    Infatti adesso non mi da piu errore,
    perche c'è lo spazio in piu tra le parentesi.
    Adesso uso il tuo codice piu snellito,
    pero volevo capire se c'è la possibilita di correggere quello spazio.



  • di Vecchio Frac data: 18/05/2013 11:56:31

    Bastava solo rinominare il foglio... tasto destro sulla linguetta e rinomina...





  • di maxmi data: 18/05/2013 12:37:37

    ok grazie Vecchio Frac