VBA String to Date | I-convert ang Mga Halaga ng String sa Petsa sa Excel VBA

Excel VBA String to Date

Sa Vba mayroong isang pamamaraan kung saan maaari naming mai-convert ang isang naibigay na string sa isang petsa, at ang pamamaraan ay kilala bilang pagpapaandar ng CDATE sa vba, ito ay isang built-in na pagpapaandar sa VBA at ang mga bahagi na kinakailangan para sa pagpapaandar na ito ay upang unang baguhin ang string sa isang numero at pagkatapos ay iko-convert namin ang naibigay na numero sa isang petsa. Ang format ng resulta ay nakasalalay lamang sa format ng petsa ng system.

Ang isa sa mga karaniwang problema na kinakaharap nating lahat sa excel ay ang "Petsa at Oras" at madalas na nakaimbak bilang mga halaga ng teksto at hindi napapansin nang una. Ngunit kapag kinakailangan silang gamitin ang oras na iyon malalaman natin na ang mga halagang iyon ay nakaimbak bilang teksto at hindi alam kung paano makitungo sa kanila. Ang "Petsa at Oras" ay dalawang pinagsamang mga bagay sa isang elemento ngunit sa sandaling ang mga halagang iyon ay naimbak bilang mga halaga ng teksto, masakit na magtrabaho.

Paano Mag-convert ng Mga Halaga ng String sa Petsa?

Maaari mong i-download ang VBA String to Date Excel Template dito - VBA String to Date Excel Template

Halimbawa # 1

Kapag ang VBA variable ay idineklara at naitalaga bilang String, ang anumang itinalaga sa variable na iyon ay ituturing na string lamang. Para sa isang halimbawa tingnan ang code sa ibaba.

Code:

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

Sa variable sa itaas ng code na "k" na tinukoy bilang uri ng data na "String" at para sa variable na ito naitalaga namin ang halaga bilang "10-21".

Ok, patakbuhin natin ang code at tingnan kung ano ang nakukuha natin sa kahon ng mensahe sa VBA.

Nakuha namin ang halaga bilang 10-21 lamang, ngunit kadalasan, ang mga halagang ito ay isang petsa, hindi mga halaga ng string. Kaya't kahit na ang itinalagang uri ng data ay "String" maaari pa rin kaming mai-convert sa petsa sa pamamagitan ng paggamit ng pag-andar ng uri ng data na pag-andar na CDATE VBA.

Code:

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

Sa itaas, bago namin ipakita ang resulta ng variable na "k" sa kahon ng mensahe na naitalaga namin ang pagpapaandar ng CDATE. Ginagawa ang isang maliit na pagsasaayos, tingnan natin kung gaano kalaki ang epekto nito.

Ngayon makikita namin ang resulta bilang "Petsa" na hindi na bilang "String" na halaga.

Halimbawa # 2

Ngayon, tingnan ang code sa ibaba para sa isang halimbawa.

Code:

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

Sa puntong ito ng code sa itaas ng oras ay ipapakita ang resulta bilang "43599" tulad ng naitalaga namin sa itaas.

Ngunit sa sandaling magamit namin ang pagpapaandar ng CDATE magko-convert ito sa halaga ng petsa.

Code:

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

Ang resulta pagkatapos mailapat ang pagpapaandar ng CDATE ay ang mga sumusunod.

Dahil ang excel ay nakaimbak ng petsa bilang mga serial number ang aming nakatalagang serial number 43599 ay katumbas ng petsa 05/14/2019 kapag inilapat ang format ng petsa.

Maaari din nating mailapat ang format sa petsa bilang "DD-MMM-YYYY" upang mabasa nang wasto ang petsa.

Code:

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

Sa itaas, naideklara ko ang isang labis na variable upang maiimbak ang resulta. Para sa variable na ito, inilapat ko ang pagpapaandar ng pag-convert ng CDATE.

Susunod, gumamit ako ng pagpapaandar na FORMAT upang ilapat ang format ng format na "DD-MMM-YYYY" at ang resulta ay makikita sa ibaba.

Sa pamamagitan nito, malinaw na mababasa natin ang bahagi ng daypart at buwan. Nakasalalay din ito sa format ng petsa ng iyong system sa excel, dahil ang format ng petsa ng aking system ay "MM-DD-YYYY" ipinapakita nito ngunit hindi dapat iyon maging hadlang sa pag-format.

Halimbawa # 3

Ngayon ay makikita natin talaga kung paano nai-format ang mga petsa bilang mga halaga ng teksto sa mga cell ng worksheet. Nasa ibaba ang larawan ng mga petsa na nakaimbak bilang teksto sa isang worksheet.

Sa haligi A mula A2 hanggang A12 mayroon kaming mga halaga ng pagtingin sa petsa ngunit kapag tiningnan namin ang tab na format ipinapakita nito ang format na "Teksto". Ngayon kailangan naming i-convert ang mga halagang ito mula sa teksto hanggang sa petsa.

Nasa ibaba ang code na aking isinulat upang mai-convert ang mga halaga ng petsa na na-format na teksto sa mga aktwal na petsa.

Code:

 Sub String_To_Date2 () Dim k As Long 'Ang data ay nasa higit sa isang cell, kaya kailangang mag-loop sa bawat cell na' Open For Loop For k = 2 To 12 'Ang data ay nagsisimula mula sa ika-2 hilera at nagtatapos sa ika-12 hilera, kaya 2 hanggang 12 Mga Cell (k, 2). Halaga = CDate (Mga Cell (k, 1). Halaga) Susunod k End Sub 

Kung patakbuhin mo ang code bibigyan kami nito ng resulta sa ibaba.

Bagay na dapat alalahanin

  • Ang CDATE ay isang pagpapaandar ng uri ng data ngunit maaaring magamit upang mai-convert ang VBA string na naka-imbak na petsa sa aktwal na mga halaga ng petsa.
  • Ang resulta ng format ng pag-andar ng CDATE ay nakasalalay lamang sa format ng petsa ng system.
  • Ang mga petsa ay naiimbak bilang mga serial number sa excel, kaya kinakailangan ang pag-format upang maipakita ang mga ito bilang mga petsa.