VBA String to Date

Excel VBA-sträng till dags dato

I Vba finns en metod genom vilken vi kan konvertera en given sträng till ett datum, och metoden är känd som CDATE-funktion i vba, detta är en inbyggd funktion i VBA och de delar som krävs för denna funktion är att först konvertera strängen till ett nummer och sedan konverterar vi det angivna numret till ett datum. Resultatformatet beror bara på systemets datumformat.

Ett av de vanligaste problemen vi alla möter med excel är "Datum och tid" och lagras ofta som textvärden och går obemärkt inledningsvis. Men när de måste använda den tiden får vi veta att dessa värden lagras som text och inte vet hur de ska hantera dem alls. ”Datum och tid” är två kombinerade saker i ett element, men när dessa värden har lagrats som textvärden är det ont att arbeta med.

Hur konverterar man strängvärden till datum?

Du kan ladda ner denna VBA-sträng till datum-Excel-mall här - VBA-sträng till datum-Excel-mall

Exempel nr 1

När VBA-variabeln har deklarerats och tilldelats som sträng behandlas allt som tilldelats variabeln endast som sträng. För ett exempel, se nedanstående kod.

Koda:

 Sub String_To_Date () Dim k As String k = "10-21" MsgBox k End Sub 

I kodvariabeln ovan “k” definierad som ”String” datatyp och för denna variabel har vi tilldelat värdet som “10-21”.

Ok, låt oss köra koden och se vad vi får i meddelandefältet i VBA.

Vi fick bara värdet 10-21, men vanligtvis är dessa värden ett datum, inte strängvärden. Så även om den datatyp som tilldelats är "String" kan vi ändå konvertera till datum med hjälp av datatypkonverteringsfunktionen CDATE VBA.

Koda:

 Sub String_To_Date () Dim k As String k = "10-21" MsgBox CDate (k) End Sub 

Innan vi visar resultatet av variabeln "k" i meddelandefältet har vi tilldelat CDATE-funktionen. En liten justering görs, låt oss se hur stor inverkan det gör.

Nu skulle vi se resultatet som "Datum" inte längre som "String" -värde.

Exempel 2

Titta nu på koden nedan för ett exempel.

Koda:

 Sub String_To_Date () Dim k As String k = 43599 MsgBox k End Sub 

Vid denna tidpunkt ovan visar koden resultatet som “43599” som vi tilldelade ovan.

Men när vi väl använder CDATE-funktionen kommer den att konverteras till datumvärde.

Koda:

 Sub String_To_Date () Dim k As String k = 43599 MsgBox CDate (k) End Sub 

Resultatet efter tillämpning av CDATE-funktionen är följande.

Eftersom Excel lagrade datumet som serienummer är vårt tilldelade serienummer 43599 lika med datumet 05/14/2019 när datumformatet tillämpas.

Vi kan också tillämpa formatet på datumet som “DD-MMM-ÅÅÅÅ” för att läsa datumet noggrant.

Koda:

 Sub String_To_Date1 () Dim k As String Dim DateValue As Date k = 43599 DateValue = CDate (k) MsgBox Format (DateValue, "DD-MMM-YYYY") End Sub 

I ovanstående har jag förklarat en extra variabel för att lagra resultatet. För den här variabeln har jag tillämpat CDATE-konverteringsfunktionen.

Därefter har jag använt FORMAT-funktionen för att tillämpa formatet för “DD-MMM-ÅÅÅÅ” -formatet och resultatet blir som visas nedan.

Med detta kan vi tydligt läsa dagdelen och månadsdelen. Det beror också på ditt systemdatumformat i Excel, eftersom mitt systemdatumformat var “MM-DD-ÅÅÅÅ” så visade det så men det borde inte vara ett hinder för formatet.

Exempel # 3

Nu ser vi faktiskt hur datum formateras som textvärden i kalkylbladets celler. Nedan visas bilden av datumen som lagras som text i ett kalkylblad.

I kolumn A från A2 till A12 har vi datumvärdesvärden men när vi tittar på formatfliken visar det “Text” -format. Nu måste vi konvertera dessa värden från text till datum.

Nedan följer koden jag har skrivit för att konvertera de textformaterade datumvärdena till faktiska datum.

Koda:

 Sub String_To_Date2 () Dim k Så länge 'Data finns i mer än en cell, så måste du gå igenom varje cell' Öppna för loop För k = 2 till 12 'Data börjar från andra raden och slutar på 12: e raden, så 2 till 12 Celler (k, 2) .Value = CDate (Cells (k, 1) .Value) Nästa k End Sub 

Om du kör koden kommer det att ge oss resultatet nedan.

Saker att komma ihåg

  • CDATE är en omvandlingsfunktion för datatyp men kan användas för att konvertera VBA-strängens lagrade datum till faktiska datumvärden.
  • Resultatet av CDATE-funktionsformatet beror bara på systemdatumformat.
  • Datum lagras som serienummer i excel, så formatering krävs för att visa dem som datum.