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

Jak automaticky zaznamenat datum a čas při změně buňky?

Je pro nás snadné ručně vložit statické datum a čas nebo vložit dynamické datum měnící se systémovým časem pomocí vzorce. Pokud chcete automaticky zaznamenat datum a čas při změně nebo zadání hodnot, může být tento problém poněkud odlišný. V tomto článku však můžete tento úkol vyřešit pomocí následujících kroků.

Automatické zaznamenávání data a času při změně buňky pomocí kódu VBA

Karta Office Povolte úpravy a procházení na kartách v Office a vaše práce bude mnohem jednodušší ...
Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%
  • Znovu použít cokoli: Přidejte do svých oblíbených nejpoužívanější nebo nejsložitější vzorce, grafy a cokoli jiného a rychle je v budoucnu znovu použijte.
  • Více než 20 textových funkcí: Extrahovat číslo z textového řetězce; Extrahovat nebo odebrat část textů; Převádějte čísla a měny na anglická slova.
  • Sloučit nástroje: Více sešitů a listů do jednoho; Sloučit více buněk / řádků / sloupců bez ztráty dat; Sloučit duplicitní řádky a součet.
  • Rozdělené nástroje: Rozdělit data do více listů na základě hodnoty; Jeden sešit pro více souborů Excel, PDF nebo CSV; Jeden sloupec na více sloupců.
  • Vložit přeskakování Skryté / filtrované řádky; Count And Sum podle barvy pozadí; Posílejte hromadně osobní e-maily více příjemcům.
  • Super filtr: Vytvořte pokročilá schémata filtrů a použijte je na jakékoli listy; Typ podle týdne, dne, frekvence a dalších; Filtr tučně, vzorce, komentovat ...
  • Více než 300 výkonných funkcí; Funguje s Office 2007-2019 a 365; Podporuje všechny jazyky; Snadné nasazení ve vašem podniku nebo organizaci.

šipka modrá pravá bublina Automatické zaznamenávání data a času při změně buňky pomocí kódu VBA


Například mám řadu hodnot a teď, když změním nebo zadám nové hodnoty ve sloupci B, chci tam automaticky zaznamenat aktuální datum a čas ve sloupci C, jak ukazuje následující snímek obrazovky:

doc-update-time-value-changes-1

Tuto úlohu můžete dokončit pomocí následujícího kódu VBA. Udělejte prosím toto:

1. Podržte ALT + F11 klávesy pro otevření Okno Microsoft Visual Basic pro aplikace.

2. Poté vyberte použitý list zleva Průzkumník projektupoklepáním otevřete soubor Modula poté zkopírujte a vložte následující kód VBA do prázdného modulu:

Kód VBA: Při změně buňky se automaticky zaznamenává datum a čas

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. Poté tento kód uložte a zavřete, abyste se vrátili do listu, nyní, když změníte hodnotu buňky nebo zadáte nová data do sloupce B, datum a čas se automaticky zaznamená do sloupce C.

Poznámky:

1. Ve výše uvedeném kódu můžete upravit „B: B„Do kteréhokoli jiného sloupce, u kterého chcete změnit hodnoty buněk v tomto skriptu: Nastavit WorkRng = Intersect (Application.ActiveSheet.Range ("B: B"), Target).

2. S tím xOffsetColumn = 1 skript, můžete vložit a aktualizovat datum a čas do prvního sloupce vedle sloupce se změnou hodnoty, můžete změnit číslo 1 na jiná čísla, například 2,3,4,5… to znamená, že do data bude vloženo druhý, třetí, čtvrtý nebo pátý sloupec kromě sloupce změněných hodnot.

3. Když odstraníte hodnotu ve změněném sloupci, bude odstraněno také datum a čas.


Nejlepší kancelářské nástroje produktivity

Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než 300 výkonných funkcí. Podporuje Office / Excel 2007-2019 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Kompletní funkce 30denní bezplatná zkušební verze. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50% a omezuje stovky kliknutí myší každý den!
officetab dno
Komentáře (108)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Jak napíšete kód, abyste to udělali vícekrát na jedné stránce Př. text ve sloupci B, datum v C a text v D, datum v E?
Tento komentář byl moderátorem webu minimalizován
[quote]Jak napíšete kód, abyste to udělali vícekrát na jedné stránce Př. text ve sloupci B, datum v C a text v D, datum v E?Hilary[/quote] Vím, že je to staré, ale dlouhý, ale snadný způsob je zkopírovat deklarace proměnných a vytvořit nové proměnné (tj. WorkRng1 a Rng1). Musíte také zkopírovat příkaz "if" a změnit proměnné na nové názvy proměnných.
Tento komentář byl moderátorem webu minimalizován
[quote]Jak napíšete kód, abyste to udělali vícekrát na jedné stránce Př. text ve sloupci B, datum v C a text v D, datum v E?Hilary[/quote] Zde je kód: Private Sub Worksheet_Change(ByVal Target As Range) 'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer 'Změňte rozsah a vyberte sloupec, který aktualizujete, tj. ("A: A") nebo ("B:B") Set WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target) xOffsetColumn = 1 'Pro druhé časové razítko 'Vytvořte nové názvy proměnných, jako je WorkRng1, Rng1 atd. Dim WorkRng1 As Range Dim Rng1 As Range Dim xOffsetColumn1 As Integer Set WorkRng1 = Intersect(Application.ActiveSheet.Range("G:G"), Target) xOffsetColumn1 = 1 'Poprvé razítko If Not WorkRng Is Nothing Then Application.EnableEvents = False pro každý Rng v WorkRng If Not 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 'Podruhé razítko If Not WorkRng1 Is Nothing Then Application.EnableEve nts = False pro každý Rng1 v WorkRng1 If Not VBA.IsEmpty(Rng1.Value) Then Rng1.Offset(0, xOffsetColumn1).Value = Now Rng1.Offset(0, xOffsetColumn1).NumberFormat = "mm/dd/rrrr" Jinak Rng1.Offset(0, xOffsetColumn1).ClearContents End If Next Application.EnableEvents = True End If End Sub
Tento komentář byl moderátorem webu minimalizován
Co když to chci udělat pro řadu sloupců?
Tento komentář byl moderátorem webu minimalizován
změňte rozsah (B:B) takto: (10:20) pro sloupce 10 až 20 (D5:D40) pro sloupce 5 až 40 na řádku D Doufám, že to pomůže.
Tento komentář byl moderátorem webu minimalizován
Omlouvám se, zaměňuji sloupce za řádky, ale stále to funguje. (D:P) Ze sloupce D do P (D5:D5) ze sloupce D do P na řádku 5
Tento komentář byl moderátorem webu minimalizován
když to uložím, funguje to, ale když znovu otevřu, nefunguje to
Tento komentář byl moderátorem webu minimalizován
[quote] když to uložím, funguje to, ale když znovu otevřu, nefunguje toAutor: Aarif[/quote] Stejný problém jako Aarif... Před půl hodinou to fungovalo dobře a teď to nefunguje... také jsem chtěl jen čas, ne datum A čas, takže jsem upravil ".NumberFormat" tak, aby byl jen hh:mm:ss, uloženo, otestováno... nic jiného... stále zadávat datum a čas...? znovu otevřel VB a zadal nějaký text s oddělovači, znovu to uložil, stále to nebylo dobré, pak jsem to udělal potřetí a formát udělal, jak bylo řečeno, a najednou jsem dostal právě čas. VELMI divné Dlouho jsem si myslel, že Excel je strašidelný, od té doby, co jsem poprvé použil funkci SEARCH, hledal v buňce hodnotu, kterou bych mohl vidět na vlastní oči, ale Excel trval na tom, že neexistuje!? Nějaký Excel guru nebo exorcista, který může pomoci? proč to ignoruje můj VB a neoznačuje časové razítko, jak to udělal...? děkuji :cry:
Tento komentář byl moderátorem webu minimalizován
[quote]Jak napíšete kód, abyste to udělali vícekrát na jedné stránce Př. text ve sloupci B, datum v C a text v D, datum v E?Hilary[/quote] jaká je odpověď na citát
Tento komentář byl moderátorem webu minimalizován
Co když chci, aby se to spouštělo, ale nejsem na aktivním listu, takže spouštět na pozadí a aktualizovat, kdykoli se objeví položka ve sloupci B?
Tento komentář byl moderátorem webu minimalizován
Co když sloupec, který ovlivňuje sloupec časového razítka, je součtem několika dalších sloupců? Například... Sloupec H je =Součet(E+F+G) a chtěl bych, aby se ve sloupci I udělalo časové razítko pokaždé, když se změní sloupec H, nebo v podstatě když se změní sloupce E, F nebo G . Můžete prosím pomoci??
Tento komentář byl moderátorem webu minimalizován
Potřebuji pomoc prosím! Snažím se nechat udělat časové razítko pokaždé, když se změní jedna ze tří buněk. V ideálním případě bych to chtěl udělat, když se změní součet těchto buněk. Například. Buňky E, F, G budou změněny a buňka H bude součtem těchto tří buněk. Po změně buňky H bych chtěl, aby byla buňka I označena časovým razítkem. Je to možné?? Děkuji mnohokrát
Tento komentář byl moderátorem webu minimalizován
Snažím se spustit výše uvedený kód; avšak buňka, kterou chci zaznamenat, je propojena se zaškrtávacím políčkem, a proto je buď „PRAVDA“ nebo „NEPRAVDA“. Z nějakého důvodu nebude kód fungovat, když se buňka změní. Pokud však vložím slovo „ano“ ručně, kód funguje dobře. Znáte nějaké řešení tohoto problému? Děkuji!
Tento komentář byl moderátorem webu minimalizován
Je možné to udělat pro historická data? Pokud jsem provedl změny v buňce včera nebo před měsícem, mohu použít formu tohoto kódu k načtení těchto dat?
Tento komentář byl moderátorem webu minimalizován
Existuje způsob, jak časové razítko na základě konkrétní změny? Mám například tabulku se sloupcem rozbalovacích možností, včetně toho, že je prázdný, 'Ok' a 'Jednat'. Po dokončení úkolu se rozbalovací nabídka ručně použije k výběru „OK“. Chtěl bych, aby datumové razítko bylo svázáno, když je vybráno 'Ok', ale ne, když je vybráno 'Act'. Možnost 'Jednat' v rozevíracím seznamu se používá, když je úkol po termínu, ale ve skutečnosti se jen snažím sledovat, kdy je položka dokončena. Existuje způsob, jak toho dosáhnout pomocí výše uvedeného kódu? Dík!
Tento komentář byl moderátorem webu minimalizován
Podařilo se vám to vyřešit?
Tento komentář byl moderátorem webu minimalizován
je to velmi dobrá otázka. už jsi to vyřešil, můžeš se prosím podělit o cestu?
Díky
Tento komentář byl moderátorem webu minimalizován
Mohu změnit rozsah tak, aby byl ("A:Q"), ale potřebuji, aby se datum a čas dostaly do "S", pokud se data v jakékoli buňce AQ změní/odstraní. Mám výzvu VBA. Jakákoli pomoc je velmi oceňována!
Tento komentář byl moderátorem webu minimalizován
Promiňte, právě jsem zaslal otázku a potřebuji na ni odpověď...tento komentář mi musel uniknout...doufám, že někdo pomůže!
Tento komentář byl moderátorem webu minimalizován
Jak to změním, aby se změnilo pouze datum sousední buňky?
Tento komentář byl moderátorem webu minimalizován
Jak dosáhnu toho, že se časové razítko zaznamená do konkrétní buňky namísto buňky vedle buňky, která byla změněna. Pokouším se mít v řadě buněk časové razítko, když dojde ke změně v kterékoli z těchto buněk, chtěl bych, aby se časové razítko zapsalo do jedné konkrétní buňky...může s tím někdo pomoci? Děkuji!
Tento komentář byl moderátorem webu minimalizován
Ahoj, děkuji ti za to, protože je to skvělé pro auditovatelnost WB. Existuje způsob, jak to změnit, aby se datum/čas zaznamenával někde na WB, kdykoli je přidán nebo upraven komentář? Vím, že je to obecná otázka, ale nejsem si jistý, zda je to možné (bohužel pro MS 2010 vlastnost .comment neobsahuje vlastnost date, která by identifikovala, kdy byla zadána. Mike
Tento komentář byl moderátorem webu minimalizován
Jak mohu nakonfigurovat čtení sloupce A:A a poskytování časového razítka ve sloupci B:B pouze v případě, že je v něm zadáno 14místné číslo?
Tento komentář byl moderátorem webu minimalizován
Ahoj, potřeboval bych pomoc s kódováním VBA. Vytvářím tabulku s případy, které budou přiřazeny lidem a budou mít stav případu. Zmocněnec bude ve sloupci H a já potřebuji razítko s datem ve sloupci I, když bude buňka ve sloupci H aktualizována nebo změněna jménem. Podobně budu mít stav případu ve sloupci J a budu potřebovat razítko s datem ve sloupci K, když se zadá nebo změní stav. také když neexistuje jméno nebo status příjemce, potřebuji, aby datumové razítko ve sloupci I a K bylo prázdné. Jakákoli pomoc by byla oceněna. dík
Tento komentář byl moderátorem webu minimalizován
Tento kód jsem našel jinde a upravil jsem ho pro své použití. Pokud to uděláte správně, nemusíte si dělat starosti se zadáním funkce do buňky nebo souboru, který změní data na datum daného dne při každém otevření. - otevřete Excel - stiskněte "Alt+F11" - Poklepejte na list, na který chcete změnu použít (uvedený vlevo) - zkopírujte/vložte kód níže - upravte vstup Range(_:_) tak, aby odpovídal do sloupce, který budete aktualizovat - vstup Offset(0,_) upravte tak, aby odpovídal sloupci, kde si přejete zobrazovat datum (ve verzi níže provádím aktualizace sloupce D a chci, aby se datum zobrazovalo ve sloupci F, tedy vstupní záznam "2" pro 2 sloupce od sloupce D) - stiskněte Uložit - opakujte výše uvedené kroky, pokud jsou ve vašem sešitu další listy, které vyžadují stejný kód - možná budete muset změnit formát čísla sloupce zobrazujícího datum na "Obecné" a zvětšete šířku sloupce, pokud zobrazuje "####" poté, co provedete aktualizovanou položku Kopírovat/vložit kód níže: _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ D:D")) Není nic, pak opusťte dílčí cíl. Offset(0, 2) = Datum End Sub ___ _________________________________________________________ Hodně štěstí...
Tento komentář byl moderátorem webu minimalizován
tento kód zobrazí datum po kliknutí se objeví, je možné zobrazit datum pouze při změně obsahu v buňce, pokud pouze kliknete a nic se nezmění, datum se nezobrazí nebo zůstane dříve zadané datum?
Tento komentář byl moderátorem webu minimalizován
Když zaznamenávám v makru vzorec vloocup, jak mohu udělat, že se toto datum automaticky změní na 1 den nahoru, jako je 21. 07. 2017, pak se další den změnil na 22. 07. 2017 Automaticky sdílejte, pokud existuje nějaký kód vba.
Tento komentář byl moderátorem webu minimalizován
nahradit tento řádek
Rng.Offset(0, xOffsetColumn).Value = Nyní

na
Rng.Offset(0, xOffsetColumn).Value = Nyní+1
Tento komentář byl moderátorem webu minimalizován
Děkuji mnohokrát za kód! Přesně to, co jsem hledal!!
Tento komentář byl moderátorem webu minimalizován
Děkuji za vaší pomoc :-)
Zatím zde nejsou žádné komentáře
Načíst další
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění