اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

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

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

هل توجد دالة لادخالها في خلية ولتكن (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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information