Förstå Excel VBA IsDate-funktionen

VBA:s IsDate-funktion talar om för dig om en textsträng kan tolkas som ett datum. Till exempel evalueras alla följande uttryck till True:

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

I de två sista exemplen, lägg märke till att IsDate inte är kräsen när det gäller ordningen på dagen och månaden. Båda dessa strängar kan tolkas som ett datum, så IsDate returnerar True (oavsett dina systeminställningar för datumformat).

Här är lite information från en Microsoft Supportartikel :

VBA-datumfunktionerna IsDate, Format, CDate och CVDate använder en funktion som finns i OLE Automation (OleAut32.dll). Den här funktionen söker igenom alla möjliga datumformat genom att tokenisera vart och ett av de separerade värdena i strängen som representerar datumet och returnerar ett booleskt värde som anger om inmatningen kan representeras som ett datum.

Detta är viktigt att komma ihåg när du använder funktionen för att tolka ett datum som innehåller ett tvåsiffrigt årtal. Olika lokaler använder olika datumformat (det vill säga mm/dd/åå, åå/mm/dd, " DD MMM ÅÅ " , " ÅÅ MMM DD " och så vidare) och därför försöker funktionen siffrorna i alla positioner tills funktionen har hittat ett giltigt datum eller uttömt alla möjligheter.

Bara för att IsDate känner igen en sträng som ett datum betyder det inte att strängen på ett tillförlitligt sätt kan konverteras till ett datum. I vissa fall är resultatet tvetydigt. Hur är det till exempel med detta uttryck?

IsDate(“29-Feb-01”)

Den 29 februari 2001 är inte ett giltigt datum. Detta uttryck returnerar emellertid True eftersom 1 februari 1929 (och 2 januari 1929) är giltiga datum. Och så är samma datum 2029.

En sökning efter IsDate-dokumentation blev tom. Baserat på testning accepterar IsDate något av följande som avgränsningstecken: ett snedstreck (/), ett bindestreck (-), ett kommatecken (,), en punkt (.) och ett mellanslag.

Därför returnerar alla följande uttryck True:

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

Men så finns det den här anomalien: Följande uttryck returnerar True:

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

Men oförtydligt returnerar detta uttryck False:

IsDate(“5.1.2005”)

Anta att du skapade ett användarformulär med en InputBox där användaren anger ett datum. Det bör vara tydligt att det inte är särskilt tillförlitligt att använda IsDate för att validera posten.

Saker och ting blir ännu mer förvirrande när du inser att IsDate också täcker tidsvärden. (Det finns ingen motsvarande IsTime-funktion.) Så följande uttryck returnerar alla True:

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

Dessa uttryck returnerar False:

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

Det är viktigt att påpeka att IsDate inte uppvisar alla dessa egenheter när du klarar ett Range-argument. Till exempel:

IsDate(Range(“A1”))

Det verkar som att IsDate är helt pålitlig när det gäller att identifiera celler som innehåller ett datum eller en tid. Den identifierar till exempel inte en cell som innehåller 5.1 som datum. Om din kod behöver avgöra om en sträng kan tolkas som ett datum, är den bästa lösningen att lägga den strängen i en cell och sedan skriva kod för att kontrollera cellinnehållet.


Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows Microsoft Word öppnar filer i skrivskyddat läge, vilket gör det omöjligt att redigera dem? Oroa dig inte, metoderna finns nedan

Hur man åtgärdar felaktig utskrift av Microsoft Word-dokument

Hur man åtgärdar felaktig utskrift av Microsoft Word-dokument

Så här åtgärdar du fel vid utskrift av felaktiga Microsoft Word-dokument Fel vid utskrift av Word-dokument med ändrade teckensnitt, röriga stycken, saknad text eller förlorat innehåll är ganska vanligt. Men gör det inte

Radera ritningar med penna och överstrykningspenna på dina PowerPoint-bilder

Radera ritningar med penna och överstrykningspenna på dina PowerPoint-bilder

Om du har använt pennan eller överstrykningspennan för att rita på dina PowerPoint-bilder under en presentation, kan du spara ritningarna till nästa presentation eller radera dem så att nästa gång du visar den börjar du med rena PowerPoint-bilder. Följ dessa instruktioner för att radera ritningar med penna och överstrykningspenna: Radera linjer ett på […]

Stilbiblioteksinnehåll i SharePoint 2010

Stilbiblioteksinnehåll i SharePoint 2010

Stilbiblioteket innehåller CSS-filer, XSL-filer (Extensible Stylesheet Language) och bilder som används av fördefinierade mallsidor, sidlayouter och kontroller i SharePoint 2010. För att hitta CSS-filer i stilbiblioteket på en publiceringswebbplats: Välj Webbplatsåtgärder→Visa Allt webbplatsinnehåll. Innehållet på webbplatsen visas. Style-biblioteket ligger i […]

Formatera siffror i tusentals och miljoner i Excel-rapporter

Formatera siffror i tusentals och miljoner i Excel-rapporter

Överväldiga inte din publik med gigantiska siffror. I Microsoft Excel kan du förbättra läsbarheten för dina instrumentpaneler och rapporter genom att formatera dina siffror så att de visas i tusentals eller miljoner.

Hur man delar och följer SharePoint-webbplatser

Hur man delar och följer SharePoint-webbplatser

Lär dig hur du använder SharePoints sociala nätverksverktyg som låter individer och grupper kommunicera, samarbeta, dela och ansluta.

Hur man konverterar datum till Julian-format i Excel

Hur man konverterar datum till Julian-format i Excel

Julianska datum används ofta i tillverkningsmiljöer som en tidsstämpel och snabbreferens för ett batchnummer. Denna typ av datumkodning tillåter återförsäljare, konsumenter och serviceagenter att identifiera när en produkt tillverkades och därmed produktens ålder. Julianska datum används också i programmering, militären och astronomi. Annorlunda […]

Hur man skapar en Access Web App

Hur man skapar en Access Web App

Du kan skapa en webbapp i Access 2016. Så vad är en webbapp egentligen? Tja, webben betyder att den är online, och appen är bara en förkortning för "applikation". En anpassad webbapp är en onlinedatabasapplikation som nås från molnet med en webbläsare. Du bygger och underhåller webbappen i skrivbordsversionen […]

Snabbstartsfält i SharePoint 2010

Snabbstartsfält i SharePoint 2010

De flesta sidor i SharePoint 2010 visar en lista med navigeringslänkar i snabbstartsfältet till vänster på sidan. Snabbstartsfältet visar länkar till utvalt webbplatsinnehåll som listor, bibliotek, webbplatser och publiceringssidor. Snabbstartsfältet innehåller två mycket viktiga länkar: Länken Allt webbplatsinnehåll: […]

Vad betyder lösarens felmeddelanden i Excel?

Vad betyder lösarens felmeddelanden i Excel?

För enkla problem hittar Solver i Excel vanligtvis snabbt de optimala Solver-variabelvärdena för objektivfunktionen. Men i vissa fall har Solver problem med att hitta Solver-variabelvärdena som optimerar objektivfunktionen. I dessa fall visar Solver vanligtvis ett meddelande eller ett felmeddelande som beskriver eller diskuterar problemet som […]