Řetězec Excel VBA k dnešnímu dni
Ve Vba existuje metoda, pomocí které můžeme převést daný řetězec na datum, a tato metoda je známá jako funkce CDATE ve VBA, jedná se o vestavěnou funkci ve VBA a části potřebné pro tuto funkci je nejprve převést řetězec na číslo a potom převedeme dané číslo na datum. Formát výsledku závisí pouze na formátu systémového data.
Jedním z běžných problémů, se kterými se všichni setkáváme v aplikaci Excel, je „Datum a čas“, které se často ukládají jako textové hodnoty a zůstávají zpočátku bez povšimnutí. Když ale budou muset tento čas využít, zjistíme, že tyto hodnoty jsou uloženy jako text a vůbec nevíme, jak s nimi zacházet. „Datum a čas“ jsou dvě kombinované věci v jednom prvku, ale jakmile jsou tyto hodnoty uloženy jako textové hodnoty, je obtížné s nimi pracovat.
![](https://cdn.know-base.net/7208324/vba_string_to_date_convert_string_values_to_date_in_excel_vba.png.webp)
Jak převést řetězcové hodnoty k dnešnímu dni?
Příklad č. 1
Jakmile je proměnná VBA deklarována a přiřazena jako String, vše, co je této proměnné přiřazeno, bude považováno pouze za řetězec. Podívejte se například na níže uvedený kód.
Kód:
Sub String_To_Date () Dim k As String k = "10-21" MsgBox k End Sub
Ve výše uvedeném kódu je proměnná „k“ definována jako datový typ „String“ a pro tuto proměnnou jsme přiřadili hodnotu jako „10-21“.
Dobře, pojďme spustit kód a uvidíme, co dostaneme ve schránce zpráv ve VBA.
![](https://cdn.know-base.net/7208324/vba_string_to_date_convert_string_values_to_date_in_excel_vba.gif)
Získali jsme hodnotu pouze jako 10-21, ale obvykle jsou tyto hodnoty datem, nikoli řetězcovými hodnotami. Takže i když je datový typ přiřazen „String“, můžeme stále převádět data pomocí funkce převodu datového typu CDATE VBA.
Kód:
Sub String_To_Date () Dim k As String k = "10-21" MsgBox CDate (k) End Sub
Ve výše uvedeném případě, než ukážeme výsledek proměnné „k“ v okně se zprávou, jsme přiřadili funkci CDATE. Provede se malá úprava, podívejme se, jaký velký dopad to má.
![](https://cdn.know-base.net/7208324/vba_string_to_date_convert_string_values_to_date_in_excel_vba_2.gif)
Nyní bychom viděli výsledek jako „Datum“ už ne jako „Řetězcová“ hodnota.
Příklad č. 2
Nyní se podívejte na níže uvedený kód jako příklad.
Kód:
Sub String_To_Date () Dim k As String k = 43599 MsgBox k End Sub
V tomto okamžiku by výše uvedený kód zobrazil výsledek jako „43599“, jak jsme přiřadili výše.
![](https://cdn.know-base.net/7208324/vba_string_to_date_convert_string_values_to_date_in_excel_vba_3.gif)
Ale jakmile použijeme funkci CDATE, převede se na hodnotu data.
Kód:
Sub String_To_Date () Dim k As String k = 43599 MsgBox CDate (k) End Sub
Výsledek po použití funkce CDATE je následující.
![](https://cdn.know-base.net/7208324/vba_string_to_date_convert_string_values_to_date_in_excel_vba_4.gif)
Protože aplikace Excel uložila datum jako pořadová čísla, naše přidělené pořadové číslo 43599 se rovná datu 05/14/2019, kdy se použije formát data.
Můžeme také použít formát data jako „DD-MMM-RRRR“, abychom mohli datum přesně načíst.
Kód:
Sub String_To_Date1 () Dim k As String Dim DateValue As Date k = 43599 DateValue = CDate (k) MsgBox Format (DateValue, "DD-MMM-YYYY") End Sub
Ve výše uvedeném jsem deklaroval jednu extra proměnnou pro uložení výsledku. Pro tuto proměnnou jsem použil funkci převodu CDATE.
Dále jsem použil funkci FORMAT k použití formátu formátu „DD-MMM-RRRR“ a výsledek bude uveden níže.
![](https://cdn.know-base.net/7208324/vba_string_to_date_convert_string_values_to_date_in_excel_vba_5.gif)
Díky tomu můžeme jasně číst část dne a měsíc. Záleží také na formátu vašeho systémového data v aplikaci Excel. Protože formát mého systémového data byl „MM-DD-RRRR“, zobrazovalo se to tak, ale to by nemělo být překážkou formátování.
Příklad č. 3
Nyní uvidíme, jak jsou data formátována jako textové hodnoty v buňkách listu. Níže je obrázek dat uložených jako text v listu.
![](https://cdn.know-base.net/7208324/vba_string_to_date_convert_string_values_to_date_in_excel_vba_2.png.webp)
Ve sloupci A od A2 do A12 máme hodnoty, které vypadají podle data, ale když se podíváme na kartu formát, zobrazí se formát „Text“. Nyní musíme tyto hodnoty převést z textu na datum.
Níže je uveden kód, který jsem napsal k převodu textových hodnot data na skutečná data.
Kód:
Sub String_To_Date2 () Dim k As Long 'Data jsou ve více než jedné buňce, takže je třeba procházet každou buňkou' Open For Loop For k = 2 To 12 'Data začínají od 2. řady a končí ve 12. řadě, takže 2 až 12 Buňky (k, 2) .Hodnota = CDate (Buňky (k, 1) .Hodnota) Další k Konec Sub
Spustíte-li kód, zobrazí se nám níže uvedený výsledek.
![](https://cdn.know-base.net/7208324/vba_string_to_date_convert_string_values_to_date_in_excel_vba_6.gif)
Věci k zapamatování
- CDATE je funkce převodu datového typu, ale lze ji použít k převodu uloženého data řetězce VBA na skutečné hodnoty data.
- Výsledek formátu funkce CDATE závisí pouze na formátu systémového data.
- Data jsou uložena jako pořadová čísla v aplikaci Excel, proto je pro jejich zobrazení jako data nutné formátovat.