سلسلة VBA حتى تاريخه | تحويل قيم السلسلة إلى تاريخ في Excel VBA

سلسلة Excel VBA حتى تاريخه

في Vba ، توجد طريقة يمكننا من خلالها تحويل سلسلة معينة إلى تاريخ ، وتعرف الطريقة باسم دالة CDATE في vba ، وهذه وظيفة مضمنة في VBA والأجزاء المطلوبة لهذه الوظيفة هي تحويل السلسلة أولاً إلى رقم ثم نقوم بتحويل الرقم المحدد إلى تاريخ. يعتمد تنسيق النتيجة على تنسيق تاريخ النظام فقط.

إحدى المشكلات الشائعة التي نواجهها جميعًا مع برنامج Excel هي "التاريخ والوقت" وغالبًا ما يتم تخزينها كقيم نصية ولا يلاحظها أحد في البداية. ولكن عندما يُطلب منهم استخدام ذلك الوقت ، سنتعرف على أن هذه القيم مخزنة كنص ولا نعرف كيفية التعامل معها على الإطلاق. "التاريخ والوقت" هما شيئان مدمجان في عنصر واحد ولكن بمجرد تخزين هذه القيم كقيم نصية ، فمن الصعب العمل معها.

كيف يتم تحويل قيم السلسلة إلى تاريخ؟

يمكنك تنزيل VBA String to Date Excel Template هنا - VBA String to Date Excel Template

مثال 1

بمجرد الإعلان عن متغير VBA وتعيينه كسلسلة ، سيتم التعامل مع أي شيء يتم تعيينه لهذا المتغير كسلسلة فقط. للحصول على مثال ، انظر إلى الكود أدناه.

رمز:

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

في متغير الكود أعلاه "k" المُعرَّف على أنه نوع بيانات "String" وبالنسبة لهذا المتغير قمنا بتعيين القيمة على أنها "10-21".

حسنًا ، لنقم بتشغيل الكود ونرى ما سنحصل عليه في مربع الرسائل في VBA.

لقد حصلنا على القيمة من 10 إلى 21 فقط ، ولكن عادةً ما تكون هذه القيم عبارة عن تاريخ وليست قيم سلسلة. لذلك على الرغم من أن نوع البيانات المعين هو "سلسلة" ، لا يزال بإمكاننا التحويل حتى الآن باستخدام وظيفة تحويل نوع البيانات CDATE VBA.

رمز:

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

في ما سبق ، قبل أن نعرض نتيجة المتغير "k" في مربع الرسالة ، قمنا بتعيين وظيفة CDATE. تم إجراء تعديل بسيط ، دعنا نرى مدى تأثيره الكبير.

الآن سنرى النتيجة على أنها "تاريخ" لم تعد قيمة "سلسلة".

المثال رقم 2

الآن ، انظر إلى الكود أدناه للحصول على مثال.

رمز:

 Sub String_To_Date () خافت كسلسلة k = 43599 MsgBox k End Sub 

في هذه المرحلة الزمنية ، سيظهر الرمز أعلاه النتيجة كـ "43599" كما حددناها أعلاه.

ولكن بمجرد استخدام دالة CDATE ، سيتم التحويل إلى قيمة التاريخ.

رمز:

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

النتيجة بعد تطبيق وظيفة CDATE هي كما يلي.

نظرًا لأن Excel قام بتخزين التاريخ كأرقام تسلسلية ، فإن الرقم التسلسلي المخصص لدينا 43599 يساوي تاريخ 05/14/2019 عندما يتم تطبيق تنسيق التاريخ.

يمكننا أيضًا تطبيق التنسيق على التاريخ كـ "DD-MMM-YYYY" لقراءة التاريخ بدقة.

رمز:

 Sub String_To_Date1 () خافت k كسلسلة Dim DateValue كتاريخ k = 43599 DateValue = CDate (k) تنسيق MsgBox (DateValue، "DD-MMM-YYYY") End Sub 

في ما سبق ، أعلنت عن متغير إضافي واحد لتخزين النتيجة. بالنسبة لهذا المتغير ، قمت بتطبيق وظيفة تحويل CDATE.

بعد ذلك ، استخدمت وظيفة FORMAT لتطبيق تنسيق تنسيق "DD-MMM-YYYY" وستظهر النتيجة كما هو موضح أدناه.

مع هذا ، يمكننا قراءة جزء اليوم والشهر بوضوح. يعتمد ذلك أيضًا على تنسيق تاريخ النظام الخاص بك في Excel ، نظرًا لأن تنسيق تاريخ النظام الخاص بي كان "MM-DD-YYYY" كان يظهر بهذا الشكل ولكن لا ينبغي أن يكون ذلك عائقًا أمام التنسيق.

المثال رقم 3

سنرى الآن كيف يتم تنسيق التواريخ كقيم نصية في خلايا ورقة العمل. يوجد أدناه صورة للتواريخ المخزنة كنص في ورقة العمل.

في العمود A من A2 إلى A12 لدينا قيم بحث عن التاريخ ولكن عندما ننظر إلى علامة تبويب التنسيق فإنها تظهر تنسيق "Text". الآن نحن بحاجة إلى تحويل هذه القيم من نص إلى تاريخ.

يوجد أدناه الرمز الذي كتبته لتحويل قيم التاريخ بتنسيق نصي إلى تواريخ فعلية.

رمز:

 Sub String_To_Date2 () Dim k As Long 'البيانات موجودة في أكثر من خلية واحدة ، لذلك تحتاج إلى المرور عبر كل خلية' Open For Loop For k = 2 إلى 12 'تبدأ البيانات من الصف الثاني وتنتهي عند الصف الثاني عشر ، لذا من 2 إلى 12 الخلايا (ك ، 2). القيمة = CDate (الخلايا (ك ، 1). القيمة) التالي ك النهاية الفرعية 

إذا قمت بتشغيل الكود ، فسوف يعطينا النتيجة أدناه.

أشياء للذكرى

  • CDATE هي وظيفة تحويل نوع البيانات ولكن يمكن استخدامها لتحويل تاريخ سلسلة VBA المخزنة إلى قيم التاريخ الفعلية.
  • تعتمد نتيجة تنسيق وظيفة CDATE على تنسيق تاريخ النظام فقط.
  • يتم تخزين التواريخ كأرقام تسلسلية في Excel ، لذا يلزم التنسيق لإظهارها كتواريخ.

$config[zx-auto] not found$config[zx-overlay] not found