الاخ YasserKhalil
شكرا لك اخى عاشق الاكسيل على كلمتك الجميلة والملهمة
الاخ احمد يعقوب
شكرا لك اخى احمد انتم وحشتونى اكثر
الاخ adam13
شرح الكود ببساطة اخى :
Private Sub Worksheet_Change(ByVal Target As Range)
1 If Target.Count > 1 Then Exit Sub
2 Application.EnableEvents = False
3 If Target.Text = "0" And Target.Offset(, 1) = "" And Target.Column = 1 Then
4 Target.Offset(, 1) = Date - 1
5 End If
6 Application.EnableEvents = True
End Sub
1 - السطر الاول من الكود
هو اجراء وقائى لعدم توقف الروتين عند مسح خليتين او اكثر معا
2 - السطر الثانى من الكود
إيقاف تتابع الاحداث حتى لا يدخل التنغيذ فى دورة تكرارية لاتنتهى
3 - السطر الثالث من الكود
هو سطر الشروط ( بداية حلقة الشروط ) ويحتو على ثلاثة شروط مجتمعة معا ولا يتم تنفيذ الكود اذا بطل احدهما ( وهو جوهر طلبك )
الشرط الاول : ان تحتوى خلية العمود الاول على القيمة ( صفر )
الشرط الثانى : ان لا تحتوى خلية العمود الثانى على اى شئ ( وهنا مربط الفرس حتى يعاد تحديث التاريخ مرة ثانية بعد المرة الاولى اثناء عملية اعادة الحساب الاتوماتيكية للأكسيل )
4 - السطر الرابع من الكود
عند تحقق الشروط السابقة يتم ادراج التاريخ مطروحا منه يوم واحد
5 - السطر الثالث من الكود
لا يقوم بإى شئ هو ( نهاية حلقة الشروط )
6 - السطر الثالث من الكود
تشغيل تتابع الاحداث ( الذى تم ايقافة فى السطر الثانى )