Přeskočit navigaci | Přeskočit na novinky

Jste zde: Úvodní stránka » excel » vba-funkce-vzorce » zapis-aktualni-cas-do-bunky-excel-vba

Zapsat aktuální čas do buňky - VBA Excel

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Jak pomocí VBA zapsat do buňky aktuální čas. Zareaguje například na změnu v jiné buňce. Stisk tlačítka na listu atd.

Úvodem

Logo

V tomto článku dozvíte jak na vkládání data (času) do buněk pomocí VBA v Microsoft Excelu. Pro přehlednost je dělen do kapitol:


Předpokládané znalosti

V tomto článku předpokládám, že umíte použít funkce pro vložení datumu (času) pomocí VBA. Pokud ne doporučuji si tento článek přečíst.

Zpět na seznam kapitol.

Událost změna v buňce

Nejprve musíte odchytit událost, při změně v buňce.

Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "Změněna byla buňka: " & Target.Address End Sub

Do dialogového okna se vypíše adresa buňky.

Podobně lze vypsat řádek a sloupec

MsgBox "Změněna buňka v řádku: " & Target.Row MsgBox "Změněna buňka ve sloupci: " & Target.Column

Zpět na seznam kapitol.

Omezení na některý sloupec

Budete-li chtít odchytávat událost jen pro druhý sloupec.

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then MsgBox "Změněna byla buňka: " & Target.Address End If End Sub

Zpět na seznam kapitol.

Zápis aktuálního času do A1

Například do buňky A1 zapíšete aktuální čas.

Range("A1").Value = Format$(Now, "yyyy/mm/dd hh:nn:ss")

Případně takto:

Cells(1, 1).Value = Format$(Now, "yyyy/mm/dd hh:nn:ss")

Takže celkový kód, kdy pokud dojde ke změně v sloupci 2, bude do buňky A1 zapsán aktuální datu a čas.

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then Cells(1, 1).Value = Format$(Now, "yyyy/mm/dd hh:nn:ss") End If End Sub

Zpět na seznam kapitol.

Zápis času do zvolené buňky

Pokud chcete zapsat do stejného řádku, ve kterém došlo ke změně. Což už je jednoduchý. Zjistíte řádek.

i = Target.Row

Na totmo řádku zapíšete:

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then i = Target.Row Cells(i, 1).Value = Format$(Now, "yyyy/mm/dd hh:nn:ss") End If End Sub

Zpět na seznam kapitol.

Další doplnění a úpravy kódu

Při provádění události Worksheet_Change může dojít k zacyklení. Událost Change - provede se zápis do buňky, což je opět událost Change atd. Takže kód pro zápis do buňky je nutno doplnit o vypnutí zachytávání této události.

Application.EnableEvents = False ' zapsání do buňky Application.EnableEvents = True

Poznámka: Děkuji Petrovi Pecháčekovi z excelplus.net za rychlý postřeh, je rychlejší než moje schopnost dopsat článek.

Zpět na seznam kapitol.

Ke stažení

V přípravě

Závěrem

V případě námětu můžete doplnit v komentářích.

Článek byl aktualizován: 19.09.2020 11:06

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře


Stanislav Roth

Přidáno: 15.06.13 09:19

Protože dost často pročítám komentáře, věřím, že někomu se hodí:
Tato procedura (nejen ona) se dá použít i tak, aby jste náhodně či i někdo vědomně nemohl údaj o čase a datumu změnit nebo smazat a to uzamčením listu. Pro sloupec 2 nebo i jiné, které je třeba plnit daty nastavit "neuzamykat" (vybrat buňky, které chceme mít odemčené - formát, zámek, uzamčeno - nezatrhávat volbu - implicitně je zatrženo). Excel by ovšem při zadání dat a následném spuštění rutiny hlásil, že nelze vkládat do uzamčené buňky. Následující úprava kódu to vyřeší. Vhodné až nezbytné (to záleží jaké mají vaši uživatelé znalosti a na důležitosti vašich dat) je nastavit pro čtení a úpravy kódu VBA heslo (Tools, VBAProject_properties..., karta Protection). Jinak by uživatel, který nemá oprávnění pro změny, mohl nahlédnout do VBA a zjistit, jakým heslem lze odemknout list. Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Unprotect Password:="vaše heslo" procedura popsaná výše (nebo i jiná) ActiveSheet.Protect Password:="vaše heslo" End Sub List nemusíte uzamykat před použitím. Při vložení prvního (a každého dalšího) údaje a spuštění takto upravené rutiny se list uzamkne. Pozor na malé úskalí - pokud sešit odemknete ručně a opět ručně zamknete, ale s jiným heslem (omyl, záměr?!?!), než je uvedeno v kódu, stane se to, že kód list neodemkne, zahlásí chybu, excel vložený údaj v buňce povolí a uloží, ale kód neproběhne (v našem případě nezapíše datum ani čas zápisu). Chybové hlášení spustí okno pro spuštění ladění kódu a teď - v případě že máte spuštění VBA povoleno jen s heslem - zvýrazní se v okně hlášení pouze tlačítko pro ukončení (End). Tlačítku Debug nelze použít. Pokud ovšem pro VBA heslo nemáte (nedoporučuji), pak lze tlačítko "Debug" použít. Uživatel se tak přepne do VBA pro "úpravu" kódu a tam lze přečíst původní (nyní nesprávné) heslo pro odemčení listu. To sice neoprávněnému neumožní odemknout list, ale nemusí nic říci, jen nahlásí že "To ňák blbne". Další si lze domyslet, ale to už je na jinou diskuzi ...
Na závěr díky autorovi za dost dobrý stránky :-), návody, nápady a rady. Možná, že lze nějak pomocí kódu i ručně zapsané heslo zjistit a použít. To ale neumím, pokud to jde. Jde to ale jinak. Obecně - hesla v MSOffice jsou jak záclony.

Pavel Lasák

Přidáno: 15.06.13 20:28

To Stanislav Roth: Určitě se někomu bude hodit.

Petr

Přidáno: 21.09.14 17:58

Dobrý den, Potřeboval bych do listu vložit zaškrtávací políčko a aby se po zaškrtnutí políčka zapsal aktuální čas do určité buňky. Jak na to?







Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2025 |