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

Hur registrerar jag datum och tid automatiskt när cellen ändras?

Det är lätt för oss att infoga statiskt datum och tid manuellt eller infoga ett dynamiskt datum som ändras med systemtiden med en formel. Om du vill registrera datum och tid automatiskt när du ändrar eller anger värden kan det här problemet vara något annorlunda att hantera. Men i den här artikeln kan du lösa denna uppgift med följande steg.

Spela in datum och tid automatiskt när cellen ändras med VBA-kod

Fliken Office Aktiverar flikredigering och surfning i Office, och gör ditt arbete mycket enklare ...
Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%
  • Återanvänd allt: Lägg till de mest använda eller komplexa formlerna, diagrammen och allt annat till dina favoriter och återanvänd dem snabbt i framtiden.
  • Mer än 20 textfunktioner: Extrahera nummer från textsträng; Extrahera eller ta bort en del av texterna; Konvertera siffror och valutor till engelska ord.
  • Sammanfoga verktyg: Flera arbetsböcker och ark till en; Slå ihop flera celler / rader / kolumner utan att förlora data; Slå samman duplicerade rader och summa.
  • Dela verktyg: Dela data i flera ark baserat på värde; En arbetsbok för flera Excel-, PDF- eller CSV-filer; En kolumn till flera kolumner.
  • Klistra över Dolda / filtrerade rader; Räkna och summa av bakgrundsfärg; Skicka personliga e-postmeddelanden till flera mottagare i bulk.
  • Superfilter: Skapa avancerade filterscheman och tillämpas på alla ark; Svart per vecka, dag, frekvens och mer; Filter med fetstil, formler, kommentarer ...
  • Mer än 300 kraftfulla funktioner; Fungerar med Office 2007-2021 och 365; Stöder alla språk; Enkel implementering i ditt företag eller organisation.

pil blå höger bubbla Spela in datum och tid automatiskt när cellen ändras med VBA-kod

Till exempel har jag ett antal värden, och nu, när jag ändrar eller skriver nya värden i kolumn B, vill jag att det automatiskt registrerar aktuellt datum och tid i kolumn C som följande skärmdump som visas:

doc-update-time-value-changes-1

Du kan avsluta den här uppgiften med följande VBA-kod. Gör så här:

1. Håll ner ALT + F11 nycklar för att öppna Microsoft Visual Basic for Applications-fönstret.

2. Välj sedan ditt använda kalkylblad från vänster Project Explorerdubbelklicka på den för att öppna Modulerna, och kopiera och klistra sedan in följande VBA-kod i den tomma modulen:

VBA-kod: Spela in datum och tid automatiskt när cellen ändras

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. Spara och stäng sedan den här koden för att återgå till kalkylbladet, nu när du ändrar cellvärdet eller skriver in nya data i kolumn B kommer datum och tid att registreras automatiskt i kolumn C.

Anmärkningar:

1. I koden ovan kan du ändra “B: B”Till någon annan kolumn som du vill ändra cellvärdena i detta skript: Ställ WorkRng = Intersect (Application.ActiveSheet.Range ("B: B"), Target).

2. Med detta xOffsetColumn = 1 skript kan du infoga och uppdatera datum och tid till den första kolumnen bredvid din kolumn med ändringsvärde, du kan ändra nummer 1 till andra nummer, till exempel 2,3,4,5 ... det betyder att datumet kommer att infogas andra, tredje, fjärde eller femte kolumnen förutom kolumnen ändrade värden.

3. När du tar bort ett värde i den ändrade kolumnen tas även datum och tid bort.


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (108)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Hur skriver du koden för att göra detta flera gånger på en sida Ex. text i kolumn B, datum i C och text i D, datum i E?
Denna kommentar minimerades av moderatoren på webbplatsen
[quote]Hur skriver du koden för att göra detta flera gånger på en sida Ex. text i kolumn B, datum i C och text i D, datum i E?Av Hilary[/quote] Jag vet att detta är gammalt, men det långa, men enkla sättet, är att kopiera variabeldeklarationerna och skapa nya variabler (dvs. WorkRng1 och Rng1). Du måste också kopiera "if"-satsen och ändra variablerna till de nya variabelnamnen.
Denna kommentar minimerades av moderatoren på webbplatsen
[quote]Hur skriver du koden för att göra detta flera gånger på en sida Ex. text i kolumn B, datum i C och text i D, datum i E?Av Hilary[/quote] Här är koden: Private Sub Worksheet_Change(ByVal Target As Range) 'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer 'Ändra intervallet för att välja kolumnen du uppdaterar, dvs ("A: A") eller ("B:B") Set WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target) xOffsetColumn = 1 'För andra tidsstämpeln 'Skapa nya variabelnamn, som 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 'För första gången stämpeln If Not WorkRng Is Nothing Then Application.EnableEvents = False för varje Rng i WorkRng Om inte VBA.IsEmpty(Rng.Value) Then Rng.Offset(0, xOffsetColumn).Value = Now Rng.Offset(0, xOffsetColumn).NumberFormat = "mm/dd/ yyyy" Else Rng.Offset(0, xOffsetColumn).ClearContents End If Next Application.EnableEvents = True End If 'För andra gången stämpel If Not WorkRng1 Is Nothing Then Application.EnableEve nts = False för varje Rng1 i WorkRng1 Om inte VBA.IsEmpty(Rng1.Value) Then Rng1.Offset(0, xOffsetColumn1).Value = Now Rng1.Offset(0, xOffsetColumn1).NumberFormat = "mm/dd/yyyy" Annars Rng1.Offset(0, xOffsetColumn1).ClearContents End If Next Application.EnableEvents = True End If End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Vad händer om jag vill göra detta för en rad kolumner?
Denna kommentar minimerades av moderatoren på webbplatsen
ändra intervallet (B:B) så här: (10:20) för kolumner 10 till 20 (D5:D40) för kolumner 5 till 40 på rad D Hoppas det hjälper.
Denna kommentar minimerades av moderatoren på webbplatsen
Tyvärr, jag byter kolumner med rader, men det fungerar fortfarande. (D:P) Från kolumn D till P (D5:D5) från kolumn D till P på rad 5
Denna kommentar minimerades av moderatoren på webbplatsen
När jag sparar fungerar det men när jag öppnar igen fungerar det inte
Denna kommentar minimerades av moderatoren på webbplatsen
[citat]när jag sparar fungerar det men när jag öppnar igen fungerar det inteAv Aarif[/quote] Samma problem som Aarif... Det fungerade en godbit för en halvtimme sedan, och nu gör det det inte... jag ville bara ha tiden inte datumet OCH tiden, så jag redigerade ".NumberFormat" för att vara bara hh:mm:ss, sparat, testade det... inte annorlunda... fortfarande sätta datum och tid...? öppnade VB igen, och skrev in lite avgränsad text, sparade igen, fortfarande inte bra då gjorde jag det en tredje gång, och formatet gjorde som det blev tillsagt och plötsligt fick jag precis tiden. MYCKET konstigt Jag har länge trott att Excel är hemsökt, ända sedan jag först använde SEARCH-funktionen, sökte efter ett värde i en cell som jag kunde se med mina egna ögon, men Excel insisterade på att det inte fanns!? Någon Excel-guruer eller exorcister som kan hjälpa? varför ignorerar den min VB och INTE tidsstämpling som den gjorde...? tack :cry:
Denna kommentar minimerades av moderatoren på webbplatsen
[quote]Hur skriver du koden för att göra detta flera gånger på en sida Ex. text i kolumn B, datum i C och text i D, datum i E?Av Hilary[/quote] vad är svaret på citatet
Denna kommentar minimerades av moderatoren på webbplatsen
Vad händer om jag vill att detta ska köras men inte finns på ett aktivt ark, så kör i bakgrunden och uppdatera när det finns en post i B-kolumnen?
Denna kommentar minimerades av moderatoren på webbplatsen
Vad händer om kolumnen som påverkar tidsstämpelkolumnen är summan av flera andra kolumner? Till exempel... Kolumn H är =Sum(E+F+G) och jag skulle vilja ha en tidsstämpel i kolumn I varje gång kolumn H har ändrats, eller i huvudsak när kolumn E, F eller G har ändrats . Kan du snälla hjälpa??
Denna kommentar minimerades av moderatoren på webbplatsen
Jag behöver hjälp snälla! Jag försöker få en tidsstämpel varje gång som en av tre celler ändras. Jag skulle helst vilja göra detta när summan av dessa celler har ändrats. Till exempel. Cellerna E, F, G kommer att ändras och cell H kommer att vara summan av dessa tre celler. När Cell H har ändrats vill jag att Cell I ska tidsstämplas. Är detta möjligt?? Tack så mycket
Denna kommentar minimerades av moderatoren på webbplatsen
Jag försöker köra ovanstående kod; dock är cellen vars ändring jag vill spela in länkad till en kryssruta och är därför antingen "TRUE" eller "FALSE". Av någon anledning kommer koden inte att fungera när cellen ändras. Men om jag sätter in säg "ja" manuellt fungerar koden bra. Någon lösning för det här problemet som du känner till? Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Är det möjligt att göra detta för historiska data? Om jag gjorde ändringar i en cell igår eller för en månad sedan, kan jag använda en form av den här koden för att hämta dessa datum?
Denna kommentar minimerades av moderatoren på webbplatsen
Finns det ett sätt att tidsstämpla baserat på en specifik förändring? Till exempel har jag ett kalkylblad med en kolumn med rullgardinsalternativ, inklusive att vara tom, "Ok" och "Aktera". När uppgiften är klar används rullgardinsmenyn manuellt för att välja "Ok". Jag vill att datumstämpeln ska vara knuten till när "Ok" är valt, men inte när "Act" är valt. Alternativet "Aktera" i rullgardinsmenyn används när en uppgift är försenad, men jag försöker bara spåra när ett objekt är slutfört. Finns det något sätt att åstadkomma detta med ovanstående kod? Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Kunde du lösa detta?
Denna kommentar minimerades av moderatoren på webbplatsen
det är en väldigt bra fråga. har du löst det, kan du snälla dela vägen?
tack
Denna kommentar minimerades av moderatoren på webbplatsen
Jag kan ändra intervallet till ("A:Q") men jag behöver datum och tid för att gå i "S" om data i någon AQ-cell ändras/tas bort. Jag är VBA-utmanad. All hjälp är mycket uppskattad!
Denna kommentar minimerades av moderatoren på webbplatsen
Förlåt, jag postade precis en fråga och jag behöver svaret på detta...jag måste ha missat den här kommentaren...hoppas någon kan hjälpa!
Denna kommentar minimerades av moderatoren på webbplatsen
Hur ändrar jag det så att bara det intilliggande celldatumet ändras?
Denna kommentar minimerades av moderatoren på webbplatsen
Hur får jag tidsstämpeln att spela in i en specifik cell, istället för cellen bredvid den som ändrades. Jag försöker få en rad med celler tidsstämplad när en förändring sker i någon av dessa celler, jag skulle vilja att tidsstämpeln registreras i en specifik cell...kan någon hjälpa till med detta? Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Tack snälla för detta eftersom det är bra för WB-granskbarhet. Finns det något sätt att ändra detta så att datum/tid loggas någonstans på WB närhelst en kommentar läggs till eller ändras? Jag vet att detta är en allmän fråga, men jag är inte säker på om det är möjligt (tyvärr för MS 2010 innehåller .comment-egenskapen inte en date-egenskap för att identifiera när den angavs. Mike
Denna kommentar minimerades av moderatoren på webbplatsen
Hur kan jag konfigurera att läsa A:A-kolumnen och ge tidsstämpel i B:B endast när ett 14-siffrigt nummer anges i den?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag behöver lite VBA-kodningshjälp. Jag skapar ett kalkylblad med ärenden som kommer att tilldelas personer och har ärendestatus. Mottagarens kommer att vara i kol H och jag behöver en datumstämpel i kol I när cellen i kol H uppdateras eller ändras med ett namn. På samma sätt kommer jag att ha ärendestatus i Col J och kommer att behöva en datumstämpel i Col K när en status matas in eller ändras. även när det finns ett icke tilldelat namn eller status behöver jag datumstämpeln i kol I och K vara tom. All hjälp skulle uppskattas. Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Jag hittade den här koden någon annanstans och modifierade den för min användning. Om det görs på rätt sätt behöver du inte oroa dig för att ange en funktion i en cell eller att filen ändrar datumen till dagens datum varje gång den öppnas. - öppna Excel - tryck "Alt+F11" - Dubbelklicka på det kalkylblad som du vill tillämpa ändringen på (listat till vänster) - kopiera/klistra in koden nedan - justera Range(_:_)-ingången så att den motsvarar till kolumnen du kommer att uppdatera - justera Offset(0,_)-ingången så att den motsvarar kolumnen där du vill att datumet ska visas (i versionen nedan gör jag uppdateringar av kolumn D och jag vill att datumet ska visas i kolumn F, därav inmatningen "2" för 2 kolumner över från kolumn D) - tryck på spara - upprepa stegen ovan om det finns andra kalkylblad i din arbetsbok som behöver samma kod - du kanske måste ändra nummerformatet för kolumnen som visar datum till "Allmänt" och öka kolumnens bredd om den visar "####" efter att du har gjort en uppdaterad post Kopiera/klistra in kod nedan: __________________________________________________________________________ Privat underarbetsblad_Ändra(ByVal Target As Range) If Intersect(Target, Range(" D:D")) Is Nothing Then Exit Sub Target.Offset(0, 2) = Date End Sub ___ _________________________________________________________ Lycka till...
Denna kommentar minimerades av moderatoren på webbplatsen
den här koden kommer att visa datum på klick den visas, är det möjligt att visa datum endast när innehållet i cellen ändras, om bara klickat och ingenting ändrat, så visas inte datum eller tidigare inmatat datum stannar?
Denna kommentar minimerades av moderatoren på webbplatsen
När jag registrerar i makro en vloocup-formel så hur kan jag göra det datumet automatiskt ändrat till 1 dag upp som dess 21/07/2017 och nästa dag ändrades det till 22/07/2017. Dela automatiskt om det finns någon vba-kod.
Denna kommentar minimerades av moderatoren på webbplatsen
byt ut denna linje
Rng.Offset(0, xOffsetColumn).Value = Nu

till
Rng.Offset(0, xOffsetColumn).Value = Nu+1
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket för koden! Precis vad jag letade efter!!
Denna kommentar minimerades av moderatoren på webbplatsen
Tack för din hjälp :-)
Det finns inga kommentarer här ännu
Ladda fler
Lämna dina kommentarer på engelska
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL