Функция Excel VBA IsDate
IsDate е функцията VBA, която тества дали дадената стойност е датата или не. Ако предоставената стойност или референтната стойност е стойност на датата, тогава ще получим резултата като „TRUE“, ако стойността не е стойност на датата, тогава ще получим резултата като „FALSE“. Така че резултатът е BOOLEAN стойност, т.е. TRUE или FALSE.
По-долу е синтаксисът на функцията IsDate.
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__2.png.webp)
Изразът не е нищо друго освен стойността, която се опитваме да проверим, независимо дали е датата или не.
Как да използвам функцията VBA IsDate?
Ще тестваме дали стойността „5.01.19“ е стойност за дата или не.
За това първо начало, макро процедурата на Excel.
Код:
Sub IsDate_Example1 () Край Sub
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__3.png.webp)
Дефинирайте променливата, за да съхранявате стойността на датата и тъй като стойността ще бъде стойност на датата, задайте типа данни само като „Дата“.
Код:
Sub IsDate_Example1 () Dim MyDate As Date End Sub
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__4.png.webp)
Сега задайте стойността на „5.1.19“ на променливата „MyDate.“
Код:
Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" End Sub
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__5.png.webp)
Отворете полето за съобщения във VBA сега.
Код:
Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" MsgBox (End Sub
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__6.png.webp)
В това поле за съобщение ще проверим дали предоставената стойност на датата на променливата „MyDate“ е датата или не, като използваме функцията „IsDate“. Първо отворете функцията “IsDate”.
Код:
Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" MsgBox IsDate (End Sub
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__7.png.webp)
Изразът е стойността, която тестваме, за да открием дали е Дата или не. Тъй като вече сме съхранили стойността в променливата „MyDate“, предоставете само името на променливата.
Код:
Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" MsgBox IsDate (MyDate) End Sub
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__8.png.webp)
Добре, сега стартирайте кода и вижте какво получаваме в полето за съобщения.
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__9.png.webp)
Еха!!! Резултатът е ИСТИНСКИ .
Сигурно се чудите как е разпознал стойността „5.1.19“ като дата.
Причината, поради която е върнал резултата като TRUE, защото когато погледнете дадената стойност „5.1.19“, това е кратката форма на датата „05.01.2019“, така че excel е достатъчно блестящ, за да го разпознае като дата, така че резултатът е ИСТИНСКИ.
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__10.png.webp)
Сега идва сложното нещо, за същата стойност това, което ще направим, е да променим кратката форма на годината от 19 до 2019.
Код:
Sub IsDate_Example1 () Dim MyDate As String MyDate = "5.1.2019" MsgBox IsDate (MyDate) End Sub
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__11.png.webp)
Сега стартирайте кода и вижте резултата.
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__12.png.webp)
Този път той върна резултата като FALSE, тъй като частта от деня и месеца на датата е в кратка форма, но годишната част е в пълна форма на „ГГГГ“, така че ISDATE не може да разпознае, че има дата, така че резултатът е FALSE.
Сега вижте кода по-долу.
Код:
Sub IsDate_Example1 () Dim MyDate As String MyDate = "05.01.2019" MsgBox IsDate (MyDate) End Sub
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__13.png.webp)
Споменах формат за цял ден и цял месец с помощта на 0. Нека пуснем кода и да видим резултата от функцията IsDate.
Този път също получаваме резултата като FALSE .
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__14.png.webp)
Сега променете кода, както следва.
Код:
Sub IsDate_Example1 () Dim MyDate As String MyDate = "05/01/2019" MsgBox IsDate (MyDate) End Sub
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__15.png.webp)
Вместо точката (.) Като разделител, ние сме въвели наклонена черта (/) като разделител. Сега стартирайте кода и вижте резултата.
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__16.png.webp)
Този път получихме резултата като TRUE .
Това е причината да ви кажа в началото на статията, че „Дата“ е чувствително нещо.
Сега това, което ще направя, е да обединя датата и часа заедно.
Код:
Sub IsDate_Example1 () Dim MyDate As String MyDate = "05/01/2019 15:26:24" MsgBox IsDate (MyDate) End Sub
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__17.png.webp)
Това, което добавих по-горе, е часовата част на „15:26:24“ пред датата. Сега стартирайте кода и вижте резултата.
![](https://cdn.know-base.net/5796134/vba_isdate_how_to_use_excel_vba_isdate_function__18.png.webp)
И този път получихме резултата като TRUE, защото DATE & TIME в Excel са същите неща и се съхраняват като серийни номера. Цялото число представлява датата, а десетичните знаци представляват частта за времето.
Неща, които трябва да запомните тук
- IsDate връща резултат от булев тип, т.е. TRUE или FALSE.
- IsDate се предлага само като функция на VBA.
- Като дата се разглеждат само валидни форматирани дати, иначе тя ще се третира като текстови стойности и ще върне резултата като FALSE.