rendere macro attiva apertura foglio
Hai un problema con Excel? 
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
Vuoi Approfondire?