VBA-streng til dags dato | Konverter strengverdier til dato i Excel VBA

Excel VBA-streng til dags dato

I Vba er det en metode der vi kan konvertere en gitt streng til en dato, og metoden er kjent som CDATE-funksjon i vba, dette er en innebygd funksjon i VBA og delene som kreves for denne funksjonen er å først konvertere strengen til et tall og deretter konverterer vi det gitte nummeret til en dato. Resultatformatet avhenger bare av systemdatoformatet.

Et av de vanligste problemene vi alle står overfor med excel er "Date & Time" og lagres ofte som tekstverdier og blir ubemerket i utgangspunktet. Men når de er pålagt å bruke den tiden, vil vi få vite at disse verdiene er lagret som tekst og ikke vet hvordan de skal håndtere dem i det hele tatt. "Dato og tid" er to kombinerte ting i ett element, men når disse verdiene er lagret som tekstverdier, er det vondt å jobbe med.

Hvordan konvertere strengverdier til dato?

Du kan laste ned denne VBA String to Date Excel-malen her - VBA String to Date Excel-mal

Eksempel 1

Når VBA-variabelen er deklarert og tildelt som streng, vil alt som er tildelt den variabelen bare bli behandlet som streng. For et eksempel se koden nedenfor.

Kode:

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

I ovennevnte kodevariabel “k” definert som “String” datatype, og for denne variabelen har vi tilordnet verdien som “10-21”.

Ok, la oss kjøre koden og se hva vi får i meldingsboksen i VBA.

Vi fikk bare verdien 10-21, men vanligvis er disse verdiene en dato, ikke strengverdier. Så selv om datatypen som er tildelt er "String", kan vi fortsatt konvertere til dags dato ved å bruke datatypekonverteringsfunksjonen CDATE VBA.

Kode:

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

Før vi viser resultatet av variabelen “k” i meldingsboksen, har vi tildelt CDATE-funksjonen. Det gjøres en liten justering, la oss se hvor stor innvirkning det gir.

Nå ser vi resultatet som "Date" ikke lenger som "String" -verdi.

Eksempel 2

Nå, se på koden nedenfor for et eksempel.

Kode:

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

På dette tidspunktet ovenfor vil koden vise resultatet som “43599” som vi tildelte ovenfor.

Men når vi bruker CDATE-funksjonen, vil den konvertere til datoverdi.

Kode:

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

Resultatet etter bruk av CDATE-funksjonen er som følger.

Siden Excel lagret datoen som serienummer, er vårt tildelte serienummer 43599 lik datoen 05/14/2019 da datoformatet brukes.

Vi kan også bruke formatet til datoen som “DD-MMM-ÅÅÅÅ” for å lese datoen nøyaktig.

Kode:

 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 det ovennevnte har jeg erklært en ekstra variabel for å lagre resultatet. For denne variabelen har jeg brukt CDATE-konverteringsfunksjonen.

Deretter har jeg brukt FORMAT-funksjonen til å bruke formatet til “DD-MMM-ÅÅÅÅ” -formatet, og resultatet blir som vist nedenfor.

Med dette kan vi tydelig lese dagdelen og månedsdelen. Det avhenger også av systemdatoformatet i Excel, siden systemdatoformatet mitt var “MM-DD-ÅÅÅÅ”, det viste seg slik, men det burde ikke være en hindring for formatet.

Eksempel 3

Nå ser vi faktisk hvordan datoer er formatert som tekstverdier i regnearkceller. Nedenfor er bildet av datoene lagret som tekst i et regneark.

I kolonne A fra A2 til A12 har vi datoverdier, men når vi ser på formatfanen, viser den "Tekst" -format. Nå må vi konvertere disse verdiene fra tekst til dato.

Nedenfor er koden jeg har skrevet for å konvertere de tekstformaterte datoverdiene til faktiske datoer.

Kode:

 Sub String_To_Date2 () Dim k Så lenge 'Data er i mer enn en celle, så må du gå gjennom hver celle' Åpne for løkke For k = 2 til 12 'Data starter fra 2. rad og slutter på 12. rad, så 2 til 12 Celler (k, 2) .Value = CDate (Cells (k, 1) .Value) Neste k End Sub 

Hvis du kjører koden, vil det gi oss resultatet nedenfor.

Ting å huske

  • CDATE er en datatypekonverteringsfunksjon, men kan brukes til å konvertere VBA-streng lagret dato til faktiske datoverdier.
  • Resultatet av CDATE-funksjonsformatet avhenger bare av systemdatoformatet.
  • Datoer lagres som serienumre i Excel, så formatering er nødvendig for å vise dem som datoer.