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

Nový videokurz na Seduo: Excel pro začátečníky

     

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


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: 01.11.2014 14:08

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

Pavel Lasák - autor webu

Microsoft Office (Word, Excel, PowerPoint) se věnuji od roku 2006. Své vědomosti a zkušenosti dávám k dispozici na různých školeních a konzultacích, ale také na tomto webu. K dispozici na tomto webu je mnoho návodu, tipů a triků včetně desítek různých šablon.

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

Doporučte tento článek přátelům

Pokud vám článek pomohl, případně si myslíte, že může pomoci i někomu dalšímu, budu rád když jej sdílením doporučíte přátelům - děkuji:



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?


Přidání nového komentáře

Poznámka: Z časových důvodu není v mých sílách zodpovědět všechny dotazy. Děkuji za pochopení.




(vlož číslo padesátpět)

Z bezpečnostních důvodu dočasně nemůžete použít HTML značky, kromě <code> a </code> (pro vkládání VBA kódu). Děkuji za pochopení.
Děkuji, za Vaše komentáře.

Za obsah komentářů neodpovídám, jelikož jsou komentáře publikovány ihned po jejich napsání čtenářem. Toto nemohu nijak ovlivnit. Přesto si vyhrazuji možnost jakýkoli neslušný komentář smazat bez udání důvodu. V komentářích si tykáme. ;-)






Sdílejte

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

Nové články


Newsletter

Přihlaste se odběru novinek a získejte:
Ebook zdarma -
10 kroků ke zvládnutí (Word, Excel, PowerPoint)
Šipka Kniha 3D Více o ebooku ...

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 - 2016 | 11037

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.