VBA-streng til dato | Konverter strengværdier til dato i Excel VBA

Excel VBA-streng til dato

I Vba er der en metode, hvorigennem vi kan konvertere en given streng til en dato, og metoden er kendt som CDATE-funktion i vba, dette er en indbygget funktion i VBA, og de nødvendige dele til denne funktion er først at konvertere strengen til et tal, og derefter konverterer vi det givne nummer til en dato. Resultatformatet afhænger kun af systemets datoformat.

Et af de almindelige problemer, som vi alle står over for med excel, er "Date & Time" og gemmes ofte som tekstværdier og går ubemærket i første omgang. Men når de skal bruge den tid, får vi at vide, at disse værdier er gemt som tekst og slet ikke ved, hvordan man skal håndtere dem. "Dato og tid" er to kombinerede ting i et element, men når disse værdier er gemt som tekstværdier, er det smerte at arbejde med.

Sådan konverteres strengværdier til dato?

Du kan downloade denne VBA-streng til dato-Excel-skabelon her - VBA-streng til dato-Excel-skabelon

Eksempel nr. 1

Når VBA-variablen er deklareret og tildelt som streng, behandles alt, der er tildelt den pågældende variabel, kun som streng. For et eksempel se nedenstående kode.

Kode:

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

I ovenstående kodevariabel “k” defineret som “streng” datatype, og for denne variabel har vi tildelt værdien som “10-21”.

Ok, lad os køre koden og se, hvad vi får i meddelelsesfeltet i VBA.

Vi fik kun værdien som 10-21, men normalt er disse værdier en dato, ikke strengværdier. Så selvom den tildelte datatype er "String", kan vi stadig konvertere til dato ved hjælp af datatypekonverteringsfunktionen CDATE VBA.

Kode:

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

I ovenstående har vi tildelt CDATE-funktionen, før vi viser resultatet af variablen “k” i meddelelsesboksen. En lille justering foretages, lad os se, hvor stor en indvirkning det har.

Nu ser vi resultatet som "Dato" ikke længere som "String" -værdi.

Eksempel 2

Se nu på nedenstående kode for et eksempel.

Kode:

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

På dette tidspunkt viser kode ovenfor resultatet som “43599” som vi tildelte ovenfor.

Men når vi først bruger CDATE-funktionen, konverteres den til datoværdi.

Kode:

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

Resultatet efter anvendelse af CDATE-funktionen er som følger.

Da Excel lagrede datoen som serienumre, er vores tildelte serienummer 43599 lig med datoen 05/14/2019, når datoformatet anvendes.

Vi kan også anvende formatet til datoen som “DD-MMM-ÅÅÅÅ” for at læse datoen nøjagtigt.

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 ovenstående har jeg erklæret en ekstra variabel for at gemme resultatet. For denne variabel har jeg anvendt CDATE-konverteringsfunktionen.

Dernæst har jeg brugt FORMAT-funktionen til at anvende formatet på “DD-MMM-ÅÅÅÅ” -formatet, og resultatet bliver som vist nedenfor.

Med dette kan vi tydeligt læse dagdel og måned. Det afhænger også af dit systemdatoformat i Excel, da mit systemdatoformat var “MM-DD-ÅÅÅÅ”, det viste sådan, men det skulle ikke være en hindring for formatet.

Eksempel 3

Nu ser vi faktisk, hvordan datoer formateres som tekstværdier i regnearkceller. Nedenfor er billedet af de datoer, der er gemt som tekst i et regneark.

I kolonne A fra A2 til A12 har vi værdier for dato, men når vi ser på fanen format, vises det "Tekst" -format. Nu skal vi konvertere disse værdier fra tekst til dato.

Nedenfor er den kode, jeg har skrevet for at konvertere de tekstformaterede datoværdier til faktiske datoer.

Kode:

 Sub String_To_Date2 () Dim k så længe 'Data findes i mere end en celle, så det er nødvendigt at løbe gennem hver celle' Åbn for løkke For k = 2 til 12 'Data starter fra 2. række og slutter ved 12. række, så 2 til 12 Celler (k, 2) .Værdi = CDate (Celler (k, 1) .Værdi) Næste k Afslut sub 

Hvis du kører koden, vil det give os nedenstående resultat.

Ting at huske

  • CDATE er en datatypekonverteringsfunktion, men kan bruges til at konvertere VBA-streng gemt dato til faktiske datoværdier.
  • Resultatet af CDATE-funktionsformatet afhænger kun af systemets datoformat.
  • Datoer gemmes som serienumre i excel, så formatering er nødvendig for at vise dem som datoer.