Șir VBA până în prezent | Conversia valorilor șirului la dată în Excel VBA

Șir Excel VBA până în prezent

În Vba există o metodă prin care putem converti un șir dat într-o dată, iar metoda este cunoscută sub numele de funcție CDATE în vba, aceasta este o funcție încorporată în VBA și părțile necesare pentru această funcție este de a converti mai întâi șirul în un număr și apoi convertim numărul dat la o dată. Formatul rezultatului depinde numai de formatul datei sistemului.

Una dintre problemele obișnuite cu care ne confruntăm cu Excel este „Data și ora” și sunt adesea stocate ca valori text și trec neobservate inițial. Dar când li se cere să folosească acel timp, vom afla că acele valori sunt stocate ca text și nu știm cum să le tratăm deloc. „Data și ora” sunt două lucruri combinate într-un singur element, dar odată ce aceste valori sunt stocate ca valori text, este greu să lucrezi cu ele.

Cum se convertesc valorile șirurilor la dată?

Puteți descărca acest șablon Excel VBA String to Date aici - Șablon Excel VBA String to Date Excel

Exemplul nr. 1

Odată ce variabila VBA este declarată și atribuită ca Șir, orice atribuit acelei variabile va fi tratat doar ca șir. Pentru un exemplu, consultați codul de mai jos.

Cod:

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

În variabila de cod de mai sus „k” definită ca tip de date „Șir” și pentru această variabilă am atribuit valoarea ca „10-21”.

Ok, să rulăm codul și să vedem ce primim în caseta de mesaje din VBA.

Am obținut valoarea doar 10-21, dar, de obicei, aceste valori sunt o dată, nu valori de șir. Deci, chiar dacă tipul de date atribuit este „Șir”, putem converti în continuare folosind funcția de conversie a tipului de date CDATE VBA.

Cod:

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

În cele de mai sus, înainte de a afișa rezultatul variabilei „k” în caseta de mesaj, am atribuit funcția CDATE. Se face o mică ajustare, să vedem cât de mare are impactul.

Acum vom vedea rezultatul ca „Data” nu mai este ca valoare „Șir”.

Exemplul nr. 2

Acum, uitați-vă la codul de mai jos pentru un exemplu.

Cod:

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

În acest moment, codul de mai sus ar arăta rezultatul ca „43599” așa cum am atribuit mai sus.

Dar odată ce folosim funcția CDATE, aceasta se va converti în valoare de dată.

Cod:

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

Rezultatul după aplicarea funcției CDATE este următorul.

Deoarece Excel a stocat data ca numere de serie, numărul nostru de serie atribuit 43599 este egal cu data 14.05.2019 când se aplică formatul datei.

De asemenea, putem aplica formatul datei ca „ZZ-MMM-AAAA” pentru a citi data cu exactitate.

Cod:

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

In the above, I have declared one extra variable to store the result. For this variable, I have applied the CDATE conversion function.

Next, I have used FORMAT function to apply the format of the “DD-MMM-YYYY” format and the result will be as shown below.

With this, we can clearly read the daypart and month part. It also depends on your system date format in excel, since my system date format was “MM-DD-YYYY” it was showing like that but that should not be a hindrance to format.

Example #3

Now we will see actually how dates are formatted as text values in worksheet cells. Below is the image of the dates stored as text in a worksheet.

In column A from A2 to A12 we have date looking values but when we look at the format tab it shows “Text” format. Now we need to convert these values from text to date.

Below is the code I have written to convert the text-formatted date values to actual dates.

Code:

 Sub String_To_Date2() Dim k As Long 'Data is in more than one cell, so need to loop through each cell 'Open For Loop For k = 2 To 12 'Data starts from 2nd row and ends at 12th row, so 2 to 12 Cells(k, 2).Value = CDate (Cells(k, 1).Value) Next k End Sub 

If you run the code it will give us the below result.

Things to Remember

  • CDATE is a data type conversion function but can be used to convert VBA string stored date to actual date values.
  • The result of the CDATE function format depends on system date format only.
  • Dates are stored as serial numbers in excel, so formatting is required to show them as dates.