IsDate aðgerð VBA segir þér að sögn hvort hægt sé að túlka textastreng sem dagsetningu. Til dæmis, allar eftirfarandi orðasambönd meta til True:
IsDate ("25/5/2015")
IsDate(„16. janúar“)
IsDate(“12-1”)
IsDate(“12/1/15”)
IsDate(“2/30”)
IsDate ("30/2")
Í síðustu tveimur dæmunum skaltu taka eftir því að IsDate er ekki vandlátur varðandi röð dagsins og mánaðar. Hægt væri að túlka báða þessa strengi sem dagsetningu, þannig að IsDate skilar True (óháð stillingum dagsetningarsniðs kerfisins).
Hér eru upplýsingar úr stuðningsgrein Microsoft :
VBA dagsetningaraðgerðirnar IsDate, Format, CDate og CVDate nota aðgerð sem er að finna í OLE Automation (OleAut32.dll). Þessi aðgerð leitar í öllum mögulegum dagsetningarsniðum með því að auðkenna hvert aðskildra gilda í strengnum sem táknar dagsetninguna og skilar Boolean gildi sem gefur til kynna hvort hægt sé að tákna inntakið sem dagsetningu.
Þetta er mikilvægt að muna þegar aðgerðin er notuð til að túlka dagsetningu sem inniheldur tveggja stafa ártal. Mismunandi staðsetningar nota ýmis dagsetningarsnið (þ.e. mm/dd/áá, yy/mm/dd, “ DD MMM YY ” , “ YY MMM DD ” , og svo framvegis) og þess vegna reynir aðgerðin tölurnar í öllum stöðum þar til fall hefur fundið gilda dagsetningu eða tæmt alla möguleika.
Þó að IsDate þekki streng sem dagsetningu þýðir það ekki að hægt sé að breyta strengnum á áreiðanlegan hátt í dagsetningu. Í sumum tilfellum er niðurstaðan óljós. Hvað með þessa tjáningu til dæmis?
IsDate(“29-Feb-01”)
29. febrúar 2001 er ekki gild dagsetning. Hins vegar skilar þessi tjáning True vegna þess að 1. febrúar 1929 (og 2. janúar 1929) eru gildar dagsetningar. Og það eru sömu dagsetningar árið 2029.
Leit að IsDate skjölum kom upp tóm. Byggt á prófunum samþykkir IsDate eitthvað af eftirfarandi sem skilgreinastöfum: skástrik (/), bandstrik (-), kommu (,), punktur (.) og bil.
Þess vegna skila eftirfarandi orðatiltæki allar True:
IsDate(“5.1”)
IsDate(“30 6”)
IsDate(“30,6”)
IsDate(“1/2”)
En svo er það þetta frávik: Eftirfarandi orðasambönd skila True:
IsDate(“5.1.5”)
IsDate(“5.1.05”)
Hins vegar, óskýrt, skilar þessi tjáning False:
IsDate(“5.1.2005”)
Segjum sem svo að þú hafir búið til UserForm með InputBox þar sem notandinn slær inn dagsetningu. Það ætti að vera ljóst að notkun IsDate til að sannreyna færsluna er ekki mjög áreiðanleg.
Hlutirnir verða enn ruglingslegri þegar þú áttar þig á því að IsDate nær einnig yfir tímagildi. (Það er engin samsvarandi IsTime aðgerð.) Svo, eftirfarandi tjáningar skila öllum True:
IsDate(“4:45”)
IsDate(“4.45”)
IsDate(“4 45”)
IsDate(“4/45”)
IsDate(“23:59”)
Þessar orðasambönd skila False:
IsDate(“4:60”)
IsDate(“24.45”)
Það er mikilvægt að benda á að IsDate sýnir ekki allar þessar sérkenni þegar þú stenst Range rök. Til dæmis:
IsDate(Range(“A1”))
Það virðist sem IsDate sé fullkomlega áreiðanlegt við að bera kennsl á frumur sem innihalda dagsetningu eða tíma. Það auðkennir til dæmis ekki reit sem inniheldur 5.1 sem dagsetningu. Ef kóðinn þinn þarf að ákvarða hvort hægt sé að túlka streng sem dagsetningu er besta lausnin að setja strenginn inn í hólf og skrifa síðan kóða til að athuga innihald hólfsins.