Note: The other languages of the website are Google-translated. Back to English

Come registrare automaticamente la data e l'ora quando la cella cambia?

È facile per noi inserire manualmente data e ora statiche o inserire una data dinamica che cambia con l'ora di sistema con una formula. Se si desidera registrare automaticamente la data e l'ora quando si modificano o si immettono valori, questo problema potrebbe essere leggermente diverso da affrontare. Ma, in questo articolo, puoi risolvere questa attività con i seguenti passaggi.

Registra automaticamente la data e l'ora quando la cella cambia con il codice VBA

Scheda Office Abilita la modifica a schede e la navigazione in Office e semplifica notevolmente il lavoro ...
Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%
  • Riutilizza qualsiasi cosa: Aggiungi le formule, i grafici e qualsiasi altra cosa più usati o complessi ai tuoi preferiti e riutilizzali rapidamente in futuro.
  • Più di 20 funzioni di testo: Estrai numero dalla stringa di testo; Estrai o rimuovi parte di testi; Converti numeri e valute in parole inglesi.
  • Unisci strumenti: Più cartelle di lavoro e fogli in uno; Unisci più celle / righe / colonne senza perdere dati; Unisci righe duplicate e somma.
  • Strumenti di divisione: Suddivisione dei dati in più fogli in base al valore; Una cartella di lavoro su più file Excel, PDF o CSV; Da una colonna a più colonne.
  • Incolla Salto Righe nascoste / filtrate; Count And Sum di Background Color; Invia e-mail personalizzate a più destinatari in blocco.
  • Super filtro: Crea schemi di filtri avanzati e applicali a qualsiasi foglio; Riordina per settimana, giorno, frequenza e altro; Filtro in grassetto, formule, commenti ...
  • Più di 300 potenti funzionalità; Funziona con Office 2007-2021 e 365; Supporta tutte le lingue; Facile implementazione nella tua azienda o organizzazione.

freccia blu freccia destra Registra automaticamente la data e l'ora quando la cella cambia con il codice VBA

Ad esempio, ho un intervallo di valori e ora, quando cambio o digito nuovi valori nella colonna B, voglio che la data e l'ora correnti vengano registrate automaticamente nella colonna C come mostrato nella seguente schermata:

doc-update-time-value-changes-1

È possibile completare questa attività con il seguente codice VBA. Per favore, fai come segue:

1. Tieni premuto il ALT + F11 chiavi per aprire il Finestra di Microsoft Visual Basic, Applications Edition.

2. Quindi scegli il foglio di lavoro usato da sinistra Esplora progetti, fare doppio clic per aprire il file Modulo, quindi copia e incolla il seguente codice VBA nel modulo vuoto:

Codice VBA: registra automaticamente la data e l'ora quando la cella cambia

Private Sub Worksheet_Change(ByVal Target As Range)
'Update 20140722
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("B:B"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

doc-update-time-value-changes-1

3. Quindi salva e chiudi questo codice per tornare al foglio di lavoro, ora quando modifichi il valore della cella o digiti nuovi dati nella colonna B, la data e l'ora verranno registrate automaticamente nella colonna C.

Note:

1. Nel codice sopra, puoi modificare il "B: B"A qualsiasi altra colonna in cui desideri modificare i valori delle celle in questo script: Set WorkRng = Intersect (Application.ActiveSheet.Range ("B: B"), Target).

2. Con questo xColonnaOffset = 1 script, puoi inserire e aggiornare la data e l'ora nella prima colonna accanto alla colonna del valore che cambia, puoi cambiare il numero 1 con altri numeri, come 2,3,4,5 ... ciò significa che la data verrà inserita nel seconda, terza, quarta o quinta colonna oltre alla colonna dei valori modificati.

3. Quando si elimina un valore nella colonna modificata, verranno rimosse anche la data e l'ora.


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (108)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Come si scrive il codice per farlo più volte su una pagina Es. testo nella colonna B, data in C e testo in D, data in E?
Questo commento è stato fatto dal moderatore sul sito
[quote]Come si scrive il codice per farlo più volte su una pagina Es. testo nella colonna B, data in C e testo in D, data in E?Di Hilary[/quote] So che questo è vecchio ma, il modo lungo, ma semplice, è copiare le dichiarazioni delle variabili e creare nuove variabili (ad esempio WorkRng1 e Rng1). Devi anche copiare l'istruzione "if" e modificare le variabili con i nuovi nomi delle variabili.
Questo commento è stato fatto dal moderatore sul sito
[quote]Come si scrive il codice per farlo più volte su una pagina Es. testo nella colonna B, data in C e testo in D, data in E?Di Hilary[/quote] Ecco il codice: Private Sub Worksheet_Change(ByVal Target As Range) 'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer 'Cambia l'intervallo per selezionare la colonna che stai aggiornando, cioè ("A: A") o ("B:B") Set WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target) xOffsetColumn = 1 'Per il secondo timestamp 'Crea nuovi nomi di variabile, come WorkRng1, Rng1 e così via Quindi Application.EnableEvents = False per ogni Rng in WorkRng Se non VBA.IsEmpty(Rng.Value) Quindi Rng.Offset(1, xOffsetColumn).Value = Now Rng.Offset(1, xOffsetColumn).NumberFormat = "mm/gg/ yyyy" Else Rng.Offset(1, xOffsetColumn).ClearContents End If Next Application.EnableEvents = True End If 'Per il secondo timestamp If Not WorkRng1 Is Nothing Then Application.EnableEve nts = False per ogni Rng1 in WorkRng1 Se non VBA.IsEmpty(Rng0.Value) Quindi Rng0.Offset(0, xOffsetColumn1).Value = Now Rng1.Offset(1, xOffsetColumn1).NumberFormat = "mm/gg/aaaa" Altro Rng1.Offset(0, xOffsetColumn1).ClearContents End If Next Application.EnableEvents = True End If End Sub
Questo commento è stato fatto dal moderatore sul sito
E se volessi farlo per un intervallo di colonne?
Questo commento è stato fatto dal moderatore sul sito
cambia l'intervallo (B:B) in questo modo: (10:20) per le colonne da 10 a 20 (D5:D40) per le colonne da 5 a 40 sulla riga D Spero che aiuti.
Questo commento è stato fatto dal moderatore sul sito
Scusa, scambio le colonne con le righe, ma funziona ancora. (D:P) Dalla colonna D a P (D5:D5) dalla colonna D a P sulla riga 5
Questo commento è stato fatto dal moderatore sul sito
quando lo salvo funziona ma quando lo riapro non funziona
Questo commento è stato fatto dal moderatore sul sito
[quote] quando lo salvo funziona ma quando lo riapro non funzionaDi Arif[/quote] Stesso problema di Aarif... Ha funzionato a meraviglia mezz'ora fa, e ora non è così... inoltre, volevo solo l'ora, non la data E l'ora, quindi ho modificato ".NumberFormat" in modo che fosse solo hh:mm:ss, salvato, testato... non è diverso... mettendo ancora la data e l'ora...? ho aperto di nuovo il VB e ho digitato del testo delimitato, salvato di nuovo, ancora non va bene, quindi l'ho fatto una terza volta e il formato ha fatto come era stato detto e all'improvviso ho avuto solo il tempo. MOLTO strano Ho pensato a lungo che Excell fosse infestato, da quando ho usato per la prima volta la funzione RICERCA, cercando un valore in una cella che potevo vedere con i miei occhi, ma Excel ha insistito sul fatto che non esisteva!? Qualche guru o esorcista di Excel che può aiutare? perché sta ignorando il mio VB e NON il timestamp come ha fatto ...? grazie :piangere:
Questo commento è stato fatto dal moderatore sul sito
[quote]Come si scrive il codice per farlo più volte su una pagina Es. testo nella colonna B, data in C e testo in D, data in E?Di Hilary[/quote] qual è la risposta alla citazione
Questo commento è stato fatto dal moderatore sul sito
Cosa succede se voglio che venga eseguito ma non sono su un foglio attivo, quindi esegui in background e aggiorna ogni volta che c'è una voce nella colonna B?
Questo commento è stato fatto dal moderatore sul sito
Cosa succede se la colonna che sta effettuando la colonna timestamp è la somma di più colonne? Ad esempio... La colonna H è =Sum(E+F+G) e vorrei un timestamp nella colonna I ogni volta che la colonna H è stata modificata, o in sostanza quando sono state modificate le colonne E, F o G . Potete aiutare per favore??
Questo commento è stato fatto dal moderatore sul sito
Ho bisogno di aiuto per favore! Sto cercando di eseguire un timestamp ogni volta che viene modificata una delle tre celle. Idealmente, vorrei farlo quando la somma di queste celle è stata modificata. Per esempio. Le celle E, F, G verranno modificate e la cella H sarà la SOMMA di queste tre celle. Quando la cella H è stata modificata, vorrei che la cella I fosse contrassegnata dall'ora. È possibile?? Grazie mille
Questo commento è stato fatto dal moderatore sul sito
Sto tentando di eseguire il codice sopra; tuttavia, la cella della modifica che voglio registrare è collegata a una casella di controllo ed è quindi "VERO" o "FALSO". Per qualche motivo, il codice non funzionerà quando la cella cambia. Tuttavia, se inserisco dire "sì" manualmente, il codice funziona correttamente. Qualche soluzione per questo problema di cui sei a conoscenza? Grazie!
Questo commento è stato fatto dal moderatore sul sito
È possibile farlo per i dati storici? Se ho apportato modifiche a una cella ieri o un mese fa, posso utilizzare un modulo di questo codice per recuperare quelle date?
Questo commento è stato fatto dal moderatore sul sito
C'è un modo per marcare l'ora in base a una modifica specifica? Ad esempio, ho un foglio di calcolo con una colonna di opzioni a discesa tra cui vuoto, "Ok" e "Agisci". Quando l'attività è completata, il menu a discesa viene utilizzato manualmente per selezionare "Ok". Vorrei che il timbro della data fosse legato a quando è selezionato "Ok", ma non quando è selezionato "Act". L'opzione "Atti" nel menu a discesa viene utilizzata quando un'attività è scaduta, ma sto solo cercando di tenere traccia del completamento di un elemento. C'è un modo per farlo con il codice sopra? Grazie!
Questo commento è stato fatto dal moderatore sul sito
Sei riuscito a risolvere questo?
Questo commento è stato fatto dal moderatore sul sito
è un'ottima domanda. hai risolto, potresti per favore condividere il modo?
Grazie
Questo commento è stato fatto dal moderatore sul sito
Posso cambiare l'intervallo in modo che sia ("A:Q") ma ho bisogno che la data e l'ora vadano in "S" se i dati in qualsiasi cella AQ vengono modificati/rimossi. Sono VBA sfidato. Qualsiasi aiuto è molto apprezzato!
Questo commento è stato fatto dal moderatore sul sito
Scusa, ho appena postato una domanda e ho bisogno della risposta a questo... devo essermi perso questo commento... spero che qualcuno possa aiutare!
Questo commento è stato fatto dal moderatore sul sito
Come faccio a cambiarlo in modo che cambi solo la data della cella adiacente?
Questo commento è stato fatto dal moderatore sul sito
Come ottengo il timestamp da registrare in una cella specifica, invece della cella accanto a quella che è stata modificata. Sto tentando di avere un timestamp di una riga di celle quando si verifica una modifica in una di quelle celle, vorrei che il timestamp venisse registrato in una cella specifica ... qualcuno può aiutare con questo? Grazie!
Questo commento è stato fatto dal moderatore sul sito
Ciao, grazie gentilmente per questo in quanto è ottimo per la verificabilità di WB. C'è un modo per modificarlo per fare in modo che la data e l'ora vengano registrate da qualche parte sul WB ogni volta che viene aggiunto o modificato un commento? So che questa è una domanda generale, ma non sono sicuro che sia possibile (sfortunatamente per MS 2010, la proprietà .comment non contiene una proprietà date per identificare quando è stata inserita. Mike
Questo commento è stato fatto dal moderatore sul sito
Come posso configurare per leggere la colonna A:A e fornire il timestamp in B:B solo quando viene inserito un numero di 14 cifre?
Questo commento è stato fatto dal moderatore sul sito
Ciao, ho bisogno di aiuto per la codifica VBA. Sto creando un foglio di calcolo con i casi che verranno assegnati alle persone e avranno lo stato del caso. L'assegnatario sarà in Col H e ho bisogno di un timbro della data in Col I quando la cella in Col H viene aggiornata o cambiata con un nome. Allo stesso modo avrò lo stato del caso in Col J e avrò bisogno di un timbro della data in Col K quando uno stato viene inserito o modificato. anche quando c'è un nome o uno stato non assegnatario ho bisogno che il timbro della data in Col I e ​​K sia vuoto. Qualsiasi aiuto sarebbe apprezzato. Grazie
Questo commento è stato fatto dal moderatore sul sito
Ho trovato questo codice altrove e l'ho modificato per il mio uso. Se fatto correttamente, non devi preoccuparti di inserire una funzione in una cella o di modificare le date in quella di quel giorno ogni volta che viene aperto. - aprire Excel - premere "Alt+F11" - Fare doppio clic sul foglio di lavoro a cui si desidera applicare la modifica (elencato a sinistra) - copiare/incollare il codice sottostante - regolare l'input Range(_:_) in modo che corrisponda alla colonna che aggiornerai - regola l'input Offset(0,_) in modo che corrisponda alla colonna in cui desideri visualizzare la data (nella versione seguente sto apportando aggiornamenti alla colonna D e voglio che la data venga visualizzata nella colonna F, da qui la voce di input di "2" per 2 colonne oltre dalla colonna D) - premi salva - ripeti i passaggi precedenti se nella cartella di lavoro sono presenti altri fogli di lavoro che richiedono lo stesso codice - potrebbe essere necessario modificare il formato numerico della colonna che mostra il data a "Generale" e aumentare la larghezza della colonna se viene visualizzato "####" dopo aver effettuato una voce aggiornata Copia/Incolla codice di seguito: ____________________________________________________________ Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range(" D:D")) Is Nothing Quindi esci Sub Target.Offset(0, 2) = Data fine Sub ___ _________________________________________________________ In bocca al lupo...
Questo commento è stato fatto dal moderatore sul sito
questo codice mostrerà la data al clic appare, è possibile mostrare la data solo quando il contenuto nella cella viene modificato, se solo si fa clic e non si cambia nulla, la data non viene visualizzata o la data inserita in precedenza rimane?
Questo commento è stato fatto dal moderatore sul sito
Quando registro in macro una formula vloocup, quindi come posso fare in modo che la data sia cambiata automaticamente in 1 giorno in su Come il 21/07/2017, il giorno successivo è cambiata in 22/07/2017 Condividi automaticamente se è presente un codice vba.
Questo commento è stato fatto dal moderatore sul sito
sostituire questa riga
Rng.Offset(0, xOffsetColumn).Value = Ora

a
Rng.Offset(0, xOffsetColumn).Value = Now+1
Questo commento è stato fatto dal moderatore sul sito
Grazie mille per il codice! Proprio quello che stavo cercando!!
Questo commento è stato fatto dal moderatore sul sito
Grazie per l'aiuto :-)
Non ci sono ancora commenti pubblicati qui
Carica Altre
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL