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

Jste zde: Úvodní stránka » excel » vba-funkce-vzorce » excel-vba-datum-cas-hratky

Datum a čas - jak nastavit formát - Excel VBA

Videokurzy Excel

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

Jak nastavovit požadovaný formát buňky pro datum, čas nebo datum s časem VBA makrem v MS Excelu. - včetně ukázkového příkladu zdarma ke stažení.

Úvodem

Při programování ve VBA mnohdy potřebujeme nastavit v buňce formát zobrazované hodnoty. Jakée jsou možnosti u data a času a jak to provést je popsáno v tomto článku. NA závěr je k dispozici ke stažení ukázkový příklad.

MS Excel VBA - datum a čas ukázka formátování

Příklad 1

Nastavení den / měsíc / rok

Range("A5").NumberFormat = "dd/mmm/yyyy" ' nebo trochu jiný formát rok měsíc den Range("A5").NumberFormat = "yyy/mm/ddd"

Příklad 2

Nastavení data včetně času

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

Příklad 3 - včetně výpočtu

Vrátí počet dní(ů) hodin minut od pondělí tohoto týdne

Range("A13").Value = Format$(Now - (Date - Weekday(Date, vbMonday)), "\D\ni:d, \Ho\di\n: hh, \Mi\nut: nn")

Další příklad počet dnů od, v ukázce od ledna 2011

Dim datDatum As Date datDatum = DateSerial(2011, 1, 1) Range("A17").Value = (Now - dtDatum) Range("A17").NumberFormat = "###"

Příklad 4

Rok

datumMoje = Range("A24").Value Range("A25").Value = Year(datumMoje)

Příklad 5

Hrátky s formáty

Range("A28").NumberFormat = "dddd" Range("A31").Value = Format$(DateSerial(Range("C31").Value, Range("D31").Value, Range("E31").Value), "yyyy/mmmm/ddd") Range("A32").Value = Format$(DateSerial(Range("C31").Value, Range("D31").Value, Range("E31").Value), "yyyy/mm/d")

Ke stažení

Ukázkový soubor datum a čas formátování - ukázka ve VBA MS Excelu soubor ve formátu *.xlsm - ke stažení zdarma. Obsahuje více ukázek. Poznámka: Soubor využívá makra.

Č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


Martin

Přidáno: 06.01.13 18:01

Dobrý den, jak změnit formát u příkladu 5. Konkrétně změna formátu na NumberFormat...

Martin

Přidáno: 06.01.13 18:10

Ještě dodatek, jendá se mi o datum jako číslo...

josef.cajka@tiscali.cz

Přidáno: 02.03.13 17:50

Prosím o pomoc programuji ve VBA a přeposílám data v txt souborech přes mail. Při načtení a zpracování, mám problém s převodem datumu... Je totiž uložen jako string např. "01.02.2013" zkoušel jsem to i přes datevalue(), ale je to nespolehlivé. V Excelu 2007 to nakonec běží, ale v Excelu 2010 to zase kolabuje. děkuji za pomoc

Pavel Lasák

Přidáno: 03.03.13 17:03

To Josef: Jak to načítáte (kód)? Něco o načítaní je třeba zde http://stackoverflow.com/questions/11833114/excel-vba-import-txt-file-with-variable-column-width

Jip

Přidáno: 24.02.14 14:44

Dobrý den, prosím o pomoc jak získat datum v US formátu pro automatický filtr: .Range.AutoFilter Field:=8, Criteria1:=">=" + "01/09/2014 1:45:30 PM" Pokud zadám kritérium datum převedené na string, tak to nefunguje, je striktně vyžadován formát US i s AM a PM. nechce se mi skládat string z hodnot rok, měsíc, den, hodina, minuta, sekunda, plus AM nebo PM. Děkuji

pavel.duras@seznam.cz

Přidáno: 02.03.14 08:29

To Jip: Zkuste si pomoci přes číselné vyjádření časového údaje pomocí CLng (zpracuje pouze celočíselnou část, tedy datum) nebo CDbl (zpracuje datum i čas): Debug.Print Now & " - " & CLng(Now) Debug.Print Now & " - " & CDbl(Now) Pokud pracujete i s časem, je tam ještě komplikace v tom, že CDbl vrátí desetinnou čárku. Takže by bylo potřeba použít něco jako: t = "9.1.2014 13:45:30" Criteria1 = ">=" & CDbl(DateValue(t) + TimeValue(t)) Criteria1 = Replace(Criteria1, ",", ".")

okoloiduci

Přidáno: 12.08.14 11:51

nema byt v pr. 2 "":mm:"? /MM nie NN/

Pavel Lasák

Přidáno: 13.08.14 20:11

To okoloiduci: Má děkuji za skvělý postřeh. Opraveno.

george

Přidáno: 10.09.14 21:36

zdravím, mám problém s počítáním s datumy v E2010. Projekt, který mi funguje v 2007 mi v desítkách kolabuje. Když zapíšu datum ve formátu dd.mm.yyyy už se mi nedaří v 2010 s ním počítat a všechny osvědčené metody nefungují. Funguje jen v excel formátu. Jenže když to pošlu zformátovaně na textbox v UF a chci zpět uložit po opravě, je to natvrdo teěkuji a zdravím.

juraj

Přidáno: 16.10.14 09:21

Dobry den, pri pocitani udajov vychadzam vzdy z predchafzajuceho datumu mesiaca t.j. prvy a posledny den predchadzajuceho mesiaca: lastday = DateSerial(Year(Date), Month(Date), 0) firstday = lastday - Day(lastday) + 1 pri prvej slucke prepoctu mi to hodi korektne cisla naprikalad 48511 ale pri dalsej slucke prepoctu sa zmeni udaj v premennych na napr. 1.9.2014 tieto cisla vacsinou pouzivam ako filter na data z pre OBDC.. Je moznost zmenit dodatocne format v tychto premmenych skusal som natvrdo dat integer alebo double tak mi vyhodilo OBDC chybu v databaze je format podla poctu dni cize +-48000

Jozef

Přidáno: 07.06.16 11:52

Dá sa z bunky, ktorá obsahuje text, odstrániť niekoľko medzier za textom (ale iba tie - napríklad ( red peter mxxx ) tie za mxxx. Ďakujem.

Jojo

Přidáno: 13.06.16 10:49

To Jozef: -- Cells(1, 2) = RTrim(Cells(1, 1))







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 - 2024 |