إجمالي مرات مشاهدة الصفحة

الخميس، 6 أكتوبر 2016

إدراج التاريخ والوقت الحالي باستخدام المعادلات والأكواد Insert Date And Time Using Formulas And VBA Code

السلام عليكم ورحمة الله وبركاته

أقدم لكم اليوم طريقتين لإدراج التاريخ Date والوقت Time في الخلية المجاورة للخلية التي يحدث فيها إدخال أو تغيير ، أحدهما بالمعادلات والأخرى بالأكواد.


** من المعروف بالنسبة لمستخدمي الإكسيل أنه يمكن إدراج التاريخ عن طريق اختصار من لوحة المفاتيح بالضغط على مفتاح CTRL ثم بالاستمرار بالضغط على المفتاح يتم الضغط على : (حرف الكاف من لوحة المفاتيح)

ولإدراج الوقت هناك اختصار آخر وهو CTRL + SHIFT ثم بالاستمرار بالضغط عليهما يتم الضغط على : (حرف الكاف كما أسلفنا)

يمكن إدراج التاريخ والوقت في خلية واحدة >> نقوم بعمل الاختصار للتاريخ ثم نضغط مسافة ثم نقوم بعمل اختصار للوقت.
لكن يعيب هذه الطريقة أنها يدوية ومملة ، وأمر آخر لا يكون التاريخ والوقت ديناميكي بل تكون القيم ثابتة.

 ** يمكن استخدام المعادلات داخل الإكسيل لتقوم بالمهمة باستخدام الدوال TODAY (دالة لإدراج التاريخ) ، والدالة NOW (دالة لإدراج التاريخ والوقت) ، ولكن هذه الطريقة العيب فيها أن القيم المدخلة ستتجدد باستمرار أي أنها ديناميكة على الدوام.

>>> الطريقة الأولى (باستخدام المعادلات)
المطلوب أن نقوم بإدراج التاريخ والوقت في العمود الثاني بمجرد إحداث تغيير في العمود الأول (على سبيل المثال إذا قمت بإدخال قيمة في الخلية A2 ، يتم إدراج التاريخ والوقت بشكل تلقائي في الخلية B2 ، وإذا عدت وقمت بإحداث تغيير مرة أخرى يتحدث التاريخ والوقت مرة أخرى )

1 ) قبل إدراج المعادلة التي تؤدي المطلوب ، لابد من ضبط إعداد تفعيل الخيار  Enable iterative calculation ، حيث أن المعادلة ستكتب في الخلية B2 ، والمعادلة نفسها ستشير للخلية B2 ، وهذا يؤدي إلى حدوث خطأ مرجعي Circular Reference ، ولذا لتفادي هذا الخطأ الدائري المرجعي نتبع التالي :


2 ) قم بتنسيق النطاق المطلوب إدراج التاريخ والوقت به ، بالشكل التالي :


3 ) قم بإدراج المعادلة التالية في الخلية B2 ، ثم قم بسحبها إلى نهاية النطاق

=IF(A2<>"",IF(AND(B2<>"",CELL("address")=ADDRESS(ROW(A2),COLUMN(A2))),NOW(),IF(CELL("address")<>ADDRESS(ROW(A2),COLUMN(A2)),B2,NOW())),"")

>>> الطريقة الثانية (باستخدام الأكواد)
الأمر هنا يتسم بالبساطة حيث يتم وضع الكود التالي في حدث ورقة العمل ، عن طريق كليك يمين على اسم ورقة العمل ثم اختر الأمر View Code ثم ضع الكود (لكن يعيب استخدام الأكواد عدم القدرة على التراجع .. وإذا وجدت أن هناك أمر غير مرغوب فيه يمكنك ببساطة أن تغلق المصنف بدون حفظ لتفادي حدوث أية أخطاء)

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Handler
    If Target.Column = 1 Then
        Application.EnableEvents = False
            If Len(Target.Cells(1).Value2) <> 0 Then
                Target.Offset(, 1).Value = Format(Now(), "dd-mm-yyyy hh:mm:ss")
            Else
                Target.Offset(, 1).Value = vbNullString
            End If
        Application.EnableEvents = True
    End If
Handler:
End Sub

إعداد / ياسر خليل أبو البراء

هناك 5 تعليقات:

  1. فنان ... احنا خلصنا الكلام الحلو كله عليك ؟؟؟

    ردحذف
  2. بارك الله فيك يا جدو .. بس طالما خلصت الحلو يبقا هتضطر تشتري سكر
    وحبيبي عايزله سكر ومنين أجيب له سكر :)
    تقبل تحياتي

    ردحذف
  3. بارك الله فيك استاذ ياسر وجزاك الله خيراً

    ردحذف
  4. ربنا يبارك فيك أخي عبد السلام وجزيت خيراً بمثل ما دعوت لي

    ردحذف
  5. .انضم إلى eToro وقُد ثورة التكنولوجيا المالية

    حكمة الجموع المتداولون الذين يستخدمون CopyTrader™ من eToro يزيد احتمال أن يحققوا أرباحًا بنسبة 60%

    ردحذف