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

Cum se înregistrează automat data și ora când se schimbă celula?

Este ușor pentru noi să introducem manual și data statică sau să introducem o dată dinamică care se schimbă odată cu ora sistemului cu o formulă. Dacă doriți să înregistrați automat data și ora când modificați sau introduceți valori, această problemă poate fi oarecum diferită de rezolvat. Dar, în acest articol, puteți rezolva această sarcină urmând pașii următori.

Înregistrați data și ora automat când celula se modifică cu codul VBA

Fila Office Activați editarea și navigarea cu file în Office și faceți munca mult mai ușoară ...
Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%
  • Reutilizați orice: Adăugați cele mai utilizate sau complexe formule, diagrame și orice altceva la preferatele dvs. și reutilizați-le rapid în viitor.
  • Peste 20 de caracteristici text: Extrageți numărul din șirul de text; Extrageți sau eliminați o parte din texte; Conversia numerelor și valutelor în cuvinte în limba engleză.
  • Instrumente de îmbinare: Mai multe cărți de lucru și foi într-unul; Combinați mai multe celule / rânduri / coloane fără a pierde date; Combinați rândurile duplicate și suma.
  • Instrumente divizate: Împărțiți datele în mai multe foi bazate pe valoare; Un registru de lucru pentru mai multe fișiere Excel, PDF sau CSV; O coloană la mai multe coloane.
  • Lipiți săriți Rânduri ascunse / filtrate; Număr și sumă de Culoarea fundalului; Trimiteți e-mailuri personalizate către mai mulți destinatari în bloc.
  • Super Filtru: Creați scheme avansate de filtrare și aplicați oricăror foi; Sortează pe săptămână, zi, frecvență și multe altele; Filtru prin îndrăznețe, formule, comentarii ...
  • Peste 300 de caracteristici puternice; Funcționează cu Office 2007-2021 și 365; Suporta toate limbile; Implementare ușoară în întreprinderea sau organizația dvs.

săgeată albastru dreapta balon Înregistrați data și ora automat când celula se modifică cu codul VBA

De exemplu, am o gamă de valori și acum, când schimb sau introduc valori noi în Coloana B, vreau ca data și ora curente să fie înregistrate automat în Coloana C, după cum se arată în următoarea captură de ecran:

doc-update-time-value-changes-1

Puteți finaliza această sarcină cu următorul cod VBA. Vă rugăm să faceți acest lucru:

1. Țineți apăsat butonul ALT + F11 tastele pentru a deschide Fereastra Microsoft Visual Basic pentru aplicații.

2. Apoi alegeți foaia de lucru utilizată din stânga Explorator de proiecte, faceți dublu clic pe acesta pentru a deschide fișierul Module, apoi copiați și lipiți următorul cod VBA în modulul gol:

Cod VBA: Înregistrați automat data și ora când se schimbă celula

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. Apoi salvați și închideți acest cod pentru a reveni la foaia de lucru, acum când modificați valoarea celulei sau introduceți date noi în Coloana B, data și ora vor fi înregistrate automat în Coloana C.

note:

1. În codul de mai sus, puteți modifica „B: B”La orice altă coloană pe care doriți să modificați valorile celulei din acest script: Set WorkRng = Intersect (Application.ActiveSheet.Range ("B: B"), Target).

2. Cu aceasta xOffsetColumn = 1 script, puteți insera și actualiza data și ora la prima coloană de lângă coloana de valoare de schimbare, puteți schimba numărul 1 la alte numere, cum ar fi 2,3,4,5 ... asta înseamnă că data va fi inserată a doua, a treia, a patra sau a cincea coloană pe lângă coloana valorilor modificate.

3. Când ștergeți o valoare din coloana modificată, data și ora vor fi eliminate și ele.


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (108)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum scrieți codul pentru a face acest lucru de mai multe ori pe o pagină Ex. text în coloana B, data în C și text în D, data în E?
Acest comentariu a fost redus la minimum de moderatorul de pe site
[quote]Cum scrieți codul pentru a face acest lucru de mai multe ori pe o singură pagină Ex. text în coloana B, data în C și text în D, data în E?De Hilary[/quote] Știu că acest lucru este vechi, dar calea lungă, dar ușoară, este să copiați declarațiile variabilelor și să creați variabile noi (adică WorkRng1 și Rng1). De asemenea, trebuie să copiați instrucțiunea „dacă” și să schimbați variabilele cu noile nume de variabile.
Acest comentariu a fost redus la minimum de moderatorul de pe site
[quote]Cum scrieți codul pentru a face acest lucru de mai multe ori pe o singură pagină Ex. text în coloana B, data în C și text în D, data în E?De Hilary[/quote] Iată codul: Private Sub Worksheet_Change(ByVal Target As Range) 'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer 'Schimbaţi Intervalul pentru a selecta coloana pe care o actualizaţi, adică ("A: A") sau ("B:B") Set WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target) xOffsetColumn = 1 'Pentru a doua marca temporală 'Creați noi nume de variabile, cum ar fi WorkRng1, Rng1, etc. Dim WorkRng1 As Range Dim Rng1 As Range Dim xOffsetColumn1 As Integer Set WorkRng1 = Intersect(Application.ActiveSheet.Range("G:G"), Target) xOffsetColumn1 = 1 'Pentru prima marca temporală If Not WorkRng Este Nimic Apoi Application.EnableEvents = False pentru fiecare Rng din WorkRng, dacă nu VBA.IsEmpty(Rng.Value) Apoi Rng.Offset(0, xOffsetColumn).Value = Acum Rng.Offset(0, xOffsetColumn).NumberFormat = "mm/dd/ yyyy" Else Rng.Offset(0, xOffsetColumn).ClearContents End If Next Application.EnableEvents = True End If 'Pentru a doua ștampilă de timp Dacă Nu WorkRng1 Este Nimic, Apoi Application.EnableEve nts = False pentru fiecare Rng1 din WorkRng1 Dacă nu VBA.IsEmpty(Rng1.Value) Atunci Rng1.Offset(0, xOffsetColumn1).Value = Acum Rng1.Offset(0, xOffsetColumn1).NumberFormat = "mm/dd/yyyy" Altceva Rng1.Offset(0, xOffsetColumn1).ClearContents End If Next Application.EnableEvents = True End If End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ce se întâmplă dacă vreau să fac asta pentru o serie de coloane?
Acest comentariu a fost redus la minimum de moderatorul de pe site
modificați intervalul (B:B) astfel: (10:20) pentru coloanele 10 la 20 (D5:D40) pentru coloanele 5 la 40 de pe rândul D. Sper că vă ajută.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Îmi pare rău, schimb coloanele cu rânduri, dar încă funcționează. (D:P) De la coloana D la P (D5:D5) de la coloana D la P pe rândul 5
Acest comentariu a fost redus la minimum de moderatorul de pe site
când îl salvez funcționează, dar când îl redeschid nu funcționează
Acest comentariu a fost redus la minimum de moderatorul de pe site
[citat] când îl salvez funcționează, dar când îl redeschid nu funcționeazăDe Aarif[/quote] Aceeași problemă ca Aarif... A funcționat cu o jumătate de oră în urmă, iar acum nu... de asemenea, am vrut doar ora, nu data ȘI ora, așa că am editat „.NumberFormat” să fie doar hh:mm:ss, salvat, testat... nu este diferit... tot pun data si ora...? am deschis din nou VB-ul și am introdus un text delimitat, am salvat din nou, tot nu e bine, apoi am făcut-o a treia oară, iar formatul a făcut cum sa spus și dintr-o dată am primit exact timpul. FOARTE ciudat Am crezut de mult că Excell este bântuit, de când am folosit prima dată funcția CĂUTARE, căutând o valoare într-o celulă pe care o puteam vedea cu proprii mei ochi, dar Excel a insistat că nu există!? Vreun guru sau exorciști Excel care te pot ajuta? de ce ignoră VB-ul meu și NU marca temporală așa cum a făcut...? multumesc :cry:
Acest comentariu a fost redus la minimum de moderatorul de pe site
[quote]Cum scrieți codul pentru a face acest lucru de mai multe ori pe o singură pagină Ex. text în coloana B, data în C și text în D, data în E?De Hilary[/quote] care este răspunsul la citat
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ce se întâmplă dacă vreau ca acest lucru să ruleze, dar nu sunt pe o foaie activă, așa că rulează în fundal și actualizează ori de câte ori există o intrare în coloana B?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ce se întâmplă dacă coloana care efectuează coloana de marcare temporală este suma mai multor alte coloane? De exemplu... Coloana H este =Suma(E+F+G) și aș dori o ștampilă de timp făcută în coloana I de fiecare dată când coloana H a fost schimbată sau, în esență, când coloanele E, F sau G au fost modificate . poti ajuta te rog??
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am nevoie de ajutor te rog! Încerc să fac un marcaj de timp de fiecare dată când se schimbă una dintre cele trei celule. În mod ideal, aș dori să fac acest lucru atunci când suma acestor celule a fost modificată. De exemplu. Celulele E, F, G vor fi modificate și Celula H va fi SUMA acelor trei celule. Când Celula H a fost schimbată, aș dori ca Celula I să fie marcată cu ora. Este posibil?? Mulțumesc foarte mult
Acest comentariu a fost redus la minimum de moderatorul de pe site
Încerc să rulez codul de mai sus; cu toate acestea, celula pentru care vreau să o înregistrez este legată de o casetă de selectare și, prin urmare, este fie „ADEVĂRAT”, fie „FALSE”. Din anumite motive, codul nu va funcționa atunci când celula se schimbă. Totuși, dacă introduc manual „da”, codul funcționează bine. O soluție pentru această problemă de care știți? Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Este posibil să faceți acest lucru pentru datele istorice? Dacă am făcut modificări la o celulă ieri sau în urmă cu o lună, pot folosi o formă a acestui cod pentru a prelua acele date?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Există o modalitate de a marca ora pe baza unei anumite modificări? De exemplu, am o foaie de calcul cu o coloană de opțiuni drop-down, inclusiv gol, „Ok” și „Acționați”. Când sarcina este finalizată, meniul drop-down este utilizat manual pentru a selecta „Ok”. Aș dori ca ștampila cu dată să fie legată atunci când este selectat „Ok”, dar nu când este selectat „Act”. Opțiunea „Acționați” din meniul drop-down este folosită atunci când o sarcină este în întârziere, dar chiar încerc doar să urmăresc când un articol este finalizat. Există vreo modalitate de a realiza acest lucru cu codul de mai sus? Mulțumiri!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ai reușit să rezolvi asta?
Acest comentariu a fost redus la minimum de moderatorul de pe site
este o intrebare foarte buna. ai rezolvat-o, ai putea te rog sa impartasesti drumul?
Mulțumiri
Acest comentariu a fost redus la minimum de moderatorul de pe site
Pot schimba intervalul pentru a fi ("A:Q"), dar am nevoie ca data și ora să treacă în "S" dacă datele din orice celulă AQ sunt modificate/eliminate. Sunt provocat VBA. Orice ajutor este foarte apreciat!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Îmi pare rău, tocmai am postat o întrebare și am nevoie de răspunsul la aceasta... Probabil că am ratat acest comentariu... sper că cineva poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum îl schimb astfel încât să se schimbe numai data celulei adiacente?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum obțin ștampila de timp pentru a înregistra într-o anumită celulă, în loc de celula de lângă cea care a fost schimbată. Încerc să am un rând de celule marcat de timp atunci când are loc o schimbare în oricare dintre aceste celule, aș dori ca marca de timp să înregistreze într-o anumită celulă... poate cineva să ajute cu asta? Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Vă mulțumesc din suflet pentru acest lucru, deoarece este excelent pentru auditabilitatea WB. Există vreo modalitate de a modifica acest lucru pentru ca data/ora să fie înregistrate undeva pe WB ori de câte ori este adăugat sau modificat un comentariu? Știu că aceasta este o întrebare generală, dar nu sunt sigur dacă este posibilă (din păcate pentru MS 2010, proprietatea .comment nu deține o proprietate de dată pentru a identifica când a fost introdusă. Mike
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum pot configura să citesc coloana A:A și să dau marcaj de timp în B:B numai atunci când este introdus un număr de 14 cifre în ea?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, am nevoie de ajutor pentru codificare VBA. Creez o foaie de calcul cu cazuri care vor fi atribuite persoanelor și vor avea statutul de caz. Cesionarul va fi în Col H și am nevoie de o ștampilă cu data în Col I când celula din Col H va fi actualizată sau schimbată cu un nume. În mod similar, voi avea starea cazului în Col J și voi avea nevoie de o ștampilă cu data în Col K când o stare este introdusă sau schimbată. de asemenea, atunci când nu există un nume sau un statut care nu este cesionar, am nevoie ca ștampila cu data din Col I și K să fie goală. Orice ajutor ar fi apreciat. Mulțumiri
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am găsit acest cod în altă parte și l-am modificat pentru uzul meu. Dacă este făcut corect, nu trebuie să vă faceți griji cu privire la introducerea unei funcții într-o celulă sau la schimbarea fișierului de date la data acelei zile de fiecare dată când este deschis. - deschideți Excel - apăsați „Alt+F11” - Faceți dublu clic pe foaia de lucru căreia doriți să aplicați modificarea (afișată în stânga) - copiați/lipiți codul de mai jos - ajustați intrarea Range(_:_) pentru a corespunde la coloana pe care o veți actualiza - ajustați intrarea Offset(0,_) pentru a corespunde coloanei în care doriți să fie afișată data (în versiunea de mai jos fac actualizări la coloana D și vreau ca data să fie afișată în coloana F, prin urmare, intrarea „2” pentru 2 coloane din coloana D) - apăsați Salvare - repetați pașii de mai sus dacă există și alte foi de lucru în registrul dvs. de lucru care au nevoie de același cod - poate fi necesar să schimbați formatul numeric al coloanei care afișează data la „General” și măriți lățimea coloanei dacă afișează „####” după ce faceți o intrare actualizată Copiați/Inserați codul de mai jos: ____________________________________________________________ Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range(" D:D")) Este Nimic Apoi Ieșire Sub țintă.Offset (0, 2) = Data Sfârșit Sub ___ _________________________________________________________ Noroc...
Acest comentariu a fost redus la minimum de moderatorul de pe site
acest cod va afișa data la clic pe care apare, este posibil să afișați data numai atunci când conținutul din celulă este modificat, dacă doar dați clic și nu s-a schimbat nimic, atunci data nu este afișată sau data introdusă anterior rămâne?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Când înregistrez în macro o formulă vloocup, deci cum pot face acea dată schimbată automat la 1 zi în sus. Ca 21/07/2017, apoi a doua zi este schimbată în 22/07/2017 Automat, vă rugăm să distribuiți dacă există vreun cod vba.
Acest comentariu a fost redus la minimum de moderatorul de pe site
înlocuiți această linie
Rng.Offset(0, xOffsetColumn).Value = Acum

la
Rng.Offset(0, xOffsetColumn).Valoare = Acum+1
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc mult pentru cod! Exact ceea ce cautam!!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă mulţumesc pentru ajutor :-)
Nu există comentarii postate aici încă
Încărcați mai
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL