Az Excel VBA IsDate függvényének megértése

A VBA IsDate függvénye állítólag megmondja, hogy egy szöveges karakterlánc értelmezhető-e dátumként. Például a következő kifejezések mindegyike igaz:

IsDate (“2015.05.25.”)
IsDate (“január 16.”)
IsDate ("12-1")
IsDate ("12/1/15")
IsDate ("2/30")
IsDate ("30/2")

Az utolsó két példában figyelje meg, hogy az IsDate nem válogat a nap és a hónap sorrendjében. Mindkét karakterlánc dátumként értelmezhető, így az IsDate True értéket ad vissza (függetlenül a rendszerdátumformátum-beállításoktól).

Íme néhány információ a Microsoft támogatási cikkéből :

A VBA dátumfüggvényei IsDate, Format, CDate és CVDate az OLE Automationban (OleAut32.dll) található függvényt használnak. Ez a függvény megkeresi az összes lehetséges dátumformátumot úgy, hogy a dátumot jelentő karakterláncban minden elválasztott értéket tokenizál, és egy logikai értéket ad vissza, jelezve, hogy a bemenet dátumként ábrázolható-e.

Ezt fontos megjegyezni, amikor a függvényt olyan dátum értelmezésére használja, amely egy 2 számjegyű évet tartalmaz. A különböző területi beállítások különböző dátumformátumokat használnak (azaz mm/nn/éé, éé/hh/nn, DD HMM YY , YY HMM DD és így tovább), ezért a függvény minden pozícióban megpróbálja a számjegyeket, amíg a függvény érvényes dátumot talált, vagy kimerítette az összes lehetőséget.

Csak azért, mert az IsDate dátumként ismer fel egy karakterláncot, még nem jelenti azt, hogy a karakterlánc megbízhatóan dátummá alakítható. Egyes esetekben az eredmény nem egyértelmű. Például mi a helyzet ezzel a kifejezéssel?

IsDate ("29-20-01"

2001. február 29. nem érvényes dátum. Ez a kifejezés azonban igaz értéket ad vissza, mert 1929. február 1. (és 1929. január 2.) érvényes dátumok. És ugyanezek a dátumok 2029-ben is.

Az IsDate dokumentáció keresése üresen jött. A tesztelés alapján az IsDate a következők bármelyikét elfogadja elválasztó karakterként: perjel (/), kötőjel (-), vessző (,), pont (.) és szóköz.

Ezért a következő kifejezések mindegyike igaz értéket ad vissza:

IsDate ("5.1")
IsDate ("30 6")
IsDate("30,6")
IsDate ("1/2")

De akkor van ez az anomália: A következő kifejezések True-t adnak vissza:

IsDate ("5.1.5")
IsDate(“5.1.05”)

Ez a kifejezés azonban kimondatlanul False értéket ad vissza:

IsDate(“2005.1.5.”)

Tegyük fel, hogy létrehozott egy felhasználói űrlapot egy InputBox-szal, ahol a felhasználó beír egy dátumot. Világosnak kell lennie, hogy az IsDate használata a bejegyzés érvényesítésére nem túl megbízható.

A dolgok még zavarosabbá válnak, ha rájössz, hogy az IsDate az időértékeket is lefedi. (Nincs megfelelő IsTime függvény.) Tehát a következő kifejezések mindegyike True-t ad vissza:

IsDate ("4:45")
IsDate ("4,45")
IsDate ("4 45")
IsDate ("4/45")
IsDate ("23:59")

Ezek a kifejezések hamis értéket adnak vissza:

IsDate ("4:60")
IsDate(“24.45”)

Fontos kiemelni, hogy az IsDate nem mutatja meg ezeket a furcsaságokat, amikor átadjuk a Range argumentumot. Például:

IsDate (Tartomány ("A1")

Úgy tűnik, hogy az IsDate tökéletesen megbízható a dátumot vagy időt tartalmazó cellák azonosításában. Nem azonosít például dátumként egy 5.1-et tartalmazó cellát. Ha a kódnak meg kell határoznia, hogy egy karakterlánc értelmezhető-e dátumként, a legjobb megoldás az, ha a karakterláncot egy cellába helyezi, majd kódot ír a cella tartalmának ellenőrzéséhez.

Leave a Comment

Lábjegyzetek és végjegyzetek létrehozása a Word 2013-ban

Lábjegyzetek és végjegyzetek létrehozása a Word 2013-ban

Lábjegyzetek és végjegyzetek létrehozása a Word 2013-ban. Részletes útmutató, hogyan készíthet különféle stílusú jegyzeteket bibliográfiai információkhoz vagy magyarázó megjegyzésekhez.

Hogyan lehet kiemelni a statisztikailag kiugró értékeket az Excelben

Hogyan lehet kiemelni a statisztikailag kiugró értékeket az Excelben

Tudjon meg mindent arról, hogyan lehet az Excelben kiemelni a statisztikailag kiugró értékeket, mégpedig egyszerű eszközökkel és módszerekkel. Kiemelt figyelmet fordítunk a kiugró értékek azonosítására és kezelésére.

Hogyan lehet mintát venni az adatokból Excelben

Hogyan lehet mintát venni az adatokból Excelben

Az Excel Mintavételi eszközével véletlenszerűen kiválaszthat elemeket egy adatkészletből vagy választhat minden n-edik elemet. Ismerje meg, hogyan használhatja ezt a hasznos funkciót az adatelemzéshez!

10 klassz trükk a Microsoft Word 2019 programmal

10 klassz trükk a Microsoft Word 2019 programmal

Fedezze fel a Microsoft Word 2019 legjobb trükkjeit, amelyek segítenek a hatékonyabb munkavégzésben. Tudd meg, hogyan használhatod ki a program funkcióit!

Bekezdések igazítása és behúzása a Word 2019-ben

Bekezdések igazítása és behúzása a Word 2019-ben

A Word 2019-ben a bekezdések igazítása és behúzása kulcsfontosságú a dokumentumok megfelelő megjelenítéséhez. Ismerje meg a formázási lehetőségeket és tippeket a hatékonyabb munkához.

Az Excel 2019 Solver használata

Az Excel 2019 Solver használata

Fedezze fel, hogyan használhatja az Excel 2019 Solver bővítményt a komplex problémák megoldására. A célcella, változócellák és kényszerek beállítása lépésről lépésre.

Dinamikus elemek hozzáadásához használja a Word 2019 mezőit

Dinamikus elemek hozzáadásához használja a Word 2019 mezőit

A Word lehetővé teszi dinamikus elemek hozzáadását a dokumentumhoz. Fedezze fel, hogyan lehet különböző mezőket használni a Word programban a dinamikus tartalom létrehozásához.

Oszloptípusok a SharePoint 2010-ben

Oszloptípusok a SharePoint 2010-ben

A SharePoint 2010 oszlopai az adatok tárolására szolgálnak. Fedezze fel a különböző oszlop típusokat és azok alkalmazását a SharePoint rendszeren belül.

A nem kívánt szöveg eltávolítása a Word 2013-ban

A nem kívánt szöveg eltávolítása a Word 2013-ban

A Word 2013 szövegtörlésének képessége kulcsfontosságú, legyen szó szövegalkotásról vagy törlésről. Ismerje meg a hatékony szövegtörlési módszereket!

Hogyan készítsünk fotóalbumot a PowerPoint 2016-ban

Hogyan készítsünk fotóalbumot a PowerPoint 2016-ban

A fotóalbum funkció a PowerPoint 2016-ban lehetővé teszi, hogy egyszerre több fényképet illesszen be egy prezentációba, megkönnyítve ezzel a többszörös képek kezelését.