Forstå Excel VBA IsDate-funksjonen

VBAs IsDate-funksjon forteller deg visstnok om en tekststreng kan tolkes som en dato. For eksempel, alle følgende uttrykk evalueres til True:

IsDate(“25/5/2015”)
IsDate(“16. januar”)
IsDate(“12-1”)
IsDate(“12/1/15”)
IsDate(“2/30”)
IsDate(“30/2”)

I de to siste eksemplene, legg merke til at IsDate ikke er kresen når det gjelder rekkefølgen på dagen og måneden. Begge disse strengene kan tolkes som en dato, så IsDate returnerer True (uavhengig av systeminnstillingene for datoformat).

Her er litt informasjon fra en Microsoft Support-artikkel :

VBA-datofunksjonene IsDate, Format, CDate og CVDate bruker en funksjon som finnes i OLE Automation (OleAut32.dll). Denne funksjonen søker i alle mulige datoformater ved å tokenisere hver av de separerte verdiene i strengen som representerer datoen og returnerer en boolsk verdi som indikerer om inndata kan representeres som en dato.

Dette er viktig å huske når du bruker funksjonen til å tolke en dato som inneholder et 2-sifret år. Ulike lokaliteter bruker forskjellige datoformater (det vil si mm/dd/åå, åå/mm/dd, " DD MMM ÅÅ " , " ÅÅ MMM DD " og så videre) og derfor prøver funksjonen sifrene i alle posisjoner til funksjonen har funnet en gyldig dato eller brukt alle muligheter.

Bare fordi IsDate gjenkjenner en streng som en dato, betyr det ikke at strengen kan konverteres pålitelig til en dato. I noen tilfeller er resultatet tvetydig. Hva med dette uttrykket for eksempel?

IsDate(“29-Feb-01”)

29. februar 2001 er ikke en gyldig dato. Dette uttrykket returnerer imidlertid True fordi 1. februar 1929 (og 2. januar 1929) er gyldige datoer. Og det samme er de samme datoene i 2029.

Et søk etter IsDate-dokumentasjon ble tomt. Basert på testing godtar IsDate ett av følgende som skilletegn: en skråstrek (/), en bindestrek (-), et komma (,), en prikk (.) og et mellomrom.

Derfor returnerer alle følgende uttrykk True:

IsDate(“5.1”)
IsDate(“30 6”)
IsDate(“30,6”)
IsDate(“1/2”)

Men så er det denne anomalien: Følgende uttrykk returnerer True:

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

Ueksplisitt returnerer imidlertid dette uttrykket False:

IsDate(“5.1.2005”)

Anta at du opprettet et brukerskjema med en InputBox der brukeren legger inn en dato. Det bør være klart at det ikke er veldig pålitelig å bruke IsDate for å validere oppføringen.

Ting blir enda mer forvirrende når du innser at IsDate også dekker tidsverdier. (Det er ingen tilsvarende IsTime-funksjon.) Så følgende uttrykk returnerer alle True:

IsDate(“4:45”)
IsDate(“4.45”)
IsDate(“4 45”)
IsDate(“4/45”)
IsDate(“23:59”)

Disse uttrykkene returnerer False:

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

Det er viktig å påpeke at IsDate ikke viser alle disse særhetene når du passerer et Range-argument. For eksempel:

IsDate(Range(“A1”))

Det ser ut til at IsDate er helt pålitelig til å identifisere celler som inneholder en dato eller et klokkeslett. Den identifiserer for eksempel ikke en celle som inneholder 5.1 som en dato. Hvis koden din trenger å finne ut om en streng kan tolkes som en dato, er den beste løsningen å sette den strengen inn i en celle, og deretter skrive kode for å sjekke celleinnholdet.


Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows Microsoft Word åpner filer i skrivebeskyttet modus, noe som gjør det umulig å redigere dem? Ikke bekymre deg, metodene er nedenfor

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Slik fikser du feil ved utskrift av feil Microsoft Word-dokumenter Feil ved utskrift av Word-dokumenter med endrede fonter, rotete avsnitt, manglende tekst eller tapt innhold er ganske vanlig. Men ikke gjør det

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Hvis du har brukt pennen eller merkepennen til å tegne på PowerPoint-lysbildene dine under en presentasjon, kan du lagre tegningene til neste presentasjon eller slette dem, slik at du neste gang du viser dem starter med rene PowerPoint-lysbilder. Følg disse instruksjonene for å slette penn- og merkepenntegninger: Slette linje én på […]

Style Library-innhold i SharePoint 2010

Style Library-innhold i SharePoint 2010

Stilbiblioteket inneholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og bilder som brukes av forhåndsdefinerte mastersider, sideoppsett og kontroller i SharePoint 2010. For å finne CSS-filer i stilbiblioteket til et publiseringsnettsted: Velg Site Actions→ View Alt innhold på nettstedet. Innholdet på nettstedet vises. Style-biblioteket ligger i […]

Formater tall i tusenvis og millioner i Excel-rapporter

Formater tall i tusenvis og millioner i Excel-rapporter

Ikke overveld publikum med gigantiske tall. I Microsoft Excel kan du forbedre lesbarheten til dashbordene og rapportene dine ved å formatere tallene dine slik at de vises i tusenvis eller millioner.

Hvordan dele og følge SharePoint-nettsteder

Hvordan dele og følge SharePoint-nettsteder

Lær hvordan du bruker SharePoints sosiale nettverksverktøy som lar enkeltpersoner og grupper kommunisere, samarbeide, dele og koble til.

Hvordan konvertere datoer til julianske formater i Excel

Hvordan konvertere datoer til julianske formater i Excel

Julianske datoer brukes ofte i produksjonsmiljøer som et tidsstempel og hurtigreferanse for et batchnummer. Denne typen datokoding lar forhandlere, forbrukere og serviceagenter identifisere når et produkt ble laget, og dermed alderen på produktet. Julianske datoer brukes også i programmering, militæret og astronomi. Forskjellig […]

Hvordan lage en Access Web App

Hvordan lage en Access Web App

Du kan lage en nettapp i Access 2016. Så hva er en nettapp egentlig? Vel, nettet betyr at det er online, og appen er bare en forkortelse for "applikasjon". En Custom Web App er en online databaseapplikasjon som du får tilgang til fra skyen ved hjelp av en nettleser. Du bygger og vedlikeholder nettappen i skrivebordsversjonen […]

Hurtigstartlinje i SharePoint 2010

Hurtigstartlinje i SharePoint 2010

De fleste sidene i SharePoint 2010 viser en liste over navigasjonskoblinger på hurtigstartlinjen langs venstre side av siden. Hurtigstartlinjen viser koblinger til innhold på nettstedet som lister, biblioteker, nettsteder og publiseringssider. Hurtigstartlinjen inneholder to svært viktige lenker: Linken for alt nettstedinnhold: […]

Hva betyr løserfeilmeldingene i Excel?

Hva betyr løserfeilmeldingene i Excel?

For enkle problemer finner Solver i Excel vanligvis raskt de optimale Solver-variabelverdiene for objektivfunksjonen. Men i noen tilfeller har Solver problemer med å finne Solver-variabelverdiene som optimerer objektivfunksjonen. I disse tilfellene viser Solver vanligvis en melding eller en feilmelding som beskriver eller diskuterer problemet som […]