اذهب الي المحتوي
أوفيسنا

اظهار وقت كتابة في خلية معينة


الردود الموصى بها

السادة المشرفين الأفاضل

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

هل توجد دالة لادخالها في خلية ولتكن (B1) تظهر وقت الكتابة في خلية أخرى ولتكن (A1)

حاولت حل ما أريد عن طريق

=IF(A1="";"";NOW())

ولكنها تظهر الوقت عند فتح الملف وليس عند الكتابة في الخلية A1 أي كلما فتحت الملف تغير الوقت حسب ساعة الكمبيوتر

بانتظار ردكم

أخوكم وسيم

رابط هذا التعليق
شارك

دالتك صحيحة أخي الكريم

ولكن يلزمها تحديث البيانات

استعمل هذا الكود بعد الضغط دبل كلك على this work book


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Application.Calculate

End Sub

ولا تنس أن تجعل تنسيق الخلية التي بها المعادلة تاريخ

  • Like 2
رابط هذا التعليق
شارك

ويمكن اختصار الكود ليصبح


Private Sub Worksheet_Change(ByVal Target As Range)

LR = Range("A" & Rows.Count).End(xlUp).Row

If Target.Column <> 1 Then Exit Sub

If Target.Row > LR Then Exit Sub

If Cells(Target.Row, 1).Value <> "" Then

Cells(Target.Row, 2).Value = Format(Now(), "hh:mm:ss")

End If

End Sub

والله اعلم

  • Like 1
رابط هذا التعليق
شارك

بارك الله فيك أخي عبد الله

حلك أفضل من حلي

لأن عملية الحساب تقوم بتغيير التواريخ السابقة لأحدث تاريخ موجود

أما في الكود الذي تفضلت به فيحتفظ الملف بالتاريخ القديم ويغير فقط تاريخ الخلية التي تمت الكتابة فيها

وفقك الله لكل ما يحب ويرضى

واسمح لي بإضافة بسيطة ربما يحتاجها أخي صاحب الموضوع

وهي حذف التاريخ من الخلية إذا حذفت القيم من خلية في العمود الأول

ليصبح الكود هكذا


Private Sub Worksheet_Change(ByVal Target As Range)

LR = Range("A" & Rows.Count).End(xlUp).Row

If Target.Column <> 1 Then Exit Sub

If Target.Row > LR Then Exit Sub

If Cells(Target.Row, 1).Value <> "" Then

Cells(Target.Row, 2).Value = Format(Now(), "hh:mm:ss")

Else

Cells(Target.Row, 2).Value = ""

End If

End Sub

  • Like 1
رابط هذا التعليق
شارك

ويمكن اختصار الكود ليصبح


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 1 Then Exit Sub

Target.Offset(0, 1).Value = IIf(Target.Value <> "", Format(Now(), "hh:mm:ss"), "")

End Sub

  • Like 1
رابط هذا التعليق
شارك

جزاكم الله خيرا اساتذتي

وهذا كود مختصر اخر لاثراء الموضوع

تحطه في حدث الورقة


Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("b2:b100")) Is Nothing Then Target(1, 0).Value = Time

End Sub

رابط هذا التعليق
شارك

  • جزاكم الله خير الجزاء
  • بصراحة الحل الوحيد الذي يفي بالغرض حل الاخ الكريم ابو احمد بملف عبدالله المجرب لان الحلول الاخرى بمجرد اغلاق الملف وفتحه يتغير الوقت بالخلية الى وقت فتح الملف
  • اتمنى من الاخ ابو احمد لو يتكرم بشرح الكود في ملف عبدالله المجرب لان امكانياتي متواضعة في فهمها , كي يتسنى لي تعديل الكود كما ارغب
  • ودمتم سالمين جميعا

رابط هذا التعليق
شارك

  • 4 years later...
في 10/27/2011, 4:20:36, وسيم العش said:

 

  • جزاكم الله خير الجزاء
  • بصراحة الحل الوحيد الذي يفي بالغرض حل الاخ الكريم ابو احمد بملف عبدالله المجرب لان الحلول الاخرى بمجرد اغلاق الملف وفتحه يتغير الوقت بالخلية الى وقت فتح الملف
  • اتمنى من الاخ ابو احمد لو يتكرم بشرح الكود في ملف عبدالله المجرب لان امكانياتي متواضعة في فهمها , كي يتسنى لي تعديل الكود كما ارغب
  • ودمتم سالمين جميعا

 

 

في 10/25/2011, 8:25:02, الـعيدروس said:

جزاكم الله خيرا اساتذتي

وهذا كود مختصر اخر لاثراء الموضوع

 

تحطه في حدث الورقة

 

 

 

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("b2:b100")) Is Nothing Then Target(1, 0).Value = Time

End Sub

 

 

في 10/25/2011, 7:26:30, أ / محمد صالح said:

ويمكن اختصار الكود ليصبح

 

 

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 1 Then Exit Sub

Target.Offset(0, 1).Value = IIf(Target.Value <> "", Format(Now(), "hh:mm:ss"), "")

End Sub

 

 

في 10/25/2011, 5:39:39, أ / محمد صالح said:

بارك الله فيك أخي عبد الله

حلك أفضل من حلي

لأن عملية الحساب تقوم بتغيير التواريخ السابقة لأحدث تاريخ موجود

أما في الكود الذي تفضلت به فيحتفظ الملف بالتاريخ القديم ويغير فقط تاريخ الخلية التي تمت الكتابة فيها

وفقك الله لكل ما يحب ويرضى

واسمح لي بإضافة بسيطة ربما يحتاجها أخي صاحب الموضوع

وهي حذف التاريخ من الخلية إذا حذفت القيم من خلية في العمود الأول

ليصبح الكود هكذا

 

 

Private Sub Worksheet_Change(ByVal Target As Range)

LR = Range("A" & Rows.Count).End(xlUp).Row

If Target.Column <> 1 Then Exit Sub

If Target.Row > LR Then Exit Sub

If Cells(Target.Row, 1).Value <> "" Then

Cells(Target.Row, 2).Value = Format(Now(), "hh:mm:ss")

Else

Cells(Target.Row, 2).Value = ""

End If

End Sub

 

السلام عليكم 
اساتذتي الافاضل وكل شخص موجود بالمنشور  وكل شخص مفي المنتدى الاكثر من رائع .....السلام عليكم
هل من الممكن عمل الموضوع اعلاه بالدوال بدون الرجوع للكودات؟؟؟؟؟

شكرا جزيلا

رابط هذا التعليق
شارك

بعد إذن لااساتذة الكرام

و حتى لا يتغير التاريخ بعد غلق الملف تم فتحه من جديد و لتسجيل وقت الادخال بالخلية لأول مرة و بطريقة ثابتة 

اقترح هذا الكود

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "" Or Target.Count > 1 Then Exit Sub
        If Not Intersect(Target, Range("b2:b100")) Is Nothing Then
            If Target(1, 0).Value = "" Then
                Target(1, 0).Value = Time
            End If
        End If
End Sub

 

  • Like 1
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information