خالد المخزومي قام بنشر فبراير 9 قام بنشر فبراير 9 السلام عليكم هلا تكرم علي اخوتي و اساتذتي بمثال حول تعقب التغييرات بالاكسل على ان يكون الملف مكتوب EXCEL VBA مفتوح المصدر حياكم الله وجعل مساعدتكم هذه في ميزان حسناتكم
abouelhassan قام بنشر فبراير 9 قام بنشر فبراير 9 56 دقائق مضت, خالد المخزومي said: السلام عليكم هلا تكرم علي اخوتي و اساتذتي بمثال حول تعقب التغييرات بالاكسل على ان يكون الملف مكتوب EXCEL VBA مفتوح المصدر حياكم الله وجعل مساعدتكم هذه في ميزان حسناتكم يمكنك استخدام ميزة التعقب التغيرات في Excel لتسجيل التغييرات التي تحدث على الملف. يمكنك اتباع الخطوات التالية: 1. افتح ملف Excel الخاص بك. 2. انتقل إلى علامة التبويب "مراجعة" (Review). 3. انقر على "تعقب التغييرات" (Track Changes). 4. اختر "تعقب التغييرات" (Track Changes). 5. في النافذة التي تظهر، حدد الخيارات التي تريدها، مثل تعقب الخلايا المحددة أو جميع الخلايا في الورقة. 6. انقر على "موافق" (OK) لتفعيل التعقب. 7. سيظهر Excel الآن رسالة تطلب منك حفظ الملف لتمكين التعقب. اضغط "موافق" (OK) لحفظ الملف. عندما يتم الآن إجراء أي تغييرات على الملف، ستظهر تلقائياً في صفحة جديدة تحت علامة التبويب "مراجعة" (Review) بعنوان "مسار التغييرات" (Changes History). احترامي وتقديري لك 1
خالد المخزومي قام بنشر فبراير 9 الكاتب قام بنشر فبراير 9 شكرا اخي الفاضل اي شخص لديه دراية بالاكسل سيقوم بتعطيل ما قمت به لذلك ان طلبت المساعدة بتنفيذ هذا الامر عن طريق اكواد VBA
abouelhassan قام بنشر فبراير 9 قام بنشر فبراير 9 3 دقائق مضت, خالد المخزومي said: شكرا اخي الفاضل اي شخص لديه دراية بالاكسل سيقوم بتعطيل ما قمت به لذلك ان طلبت المساعدة بتنفيذ هذا الامر عن طريق اكواد VBA الاصل اخى أن نقوم بتقديم البسيط وإليك المطلوب جرب Dim PreviousValue As Variant Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Me.UsedRange) Is Nothing Then Application.EnableEvents = False If PreviousValue <> Target.Value Then Call LogChanges(Target.Address, PreviousValue, Target.Value) PreviousValue = Target.Value End If Application.EnableEvents = True End If End Sub Sub LogChanges(ByVal TargetAddress As String, ByVal OldValue As Variant, ByVal NewValue As Variant) Dim wsLog As Worksheet Set wsLog = ThisWorkbook.Sheets("Log") With wsLog .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Now .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = TargetAddress .Cells(.Rows.Count, 3).End(xlUp).Offset(1, 0).Value = OldValue .Cells(.Rows.Count, 4).End(xlUp).Offset(1, 0).Value = NewValue End With End Sub الآن، قم بإضافة ورقة جديدة في ملف Excel واسمها "Log"، وهذه الورقة ستحتوي على تفاصيل التغييرات. عند كل مرة يتم فيها تغيير قيمة في ورقة العمل، سيتم تسجيل الوقت وعنوان الخلية والقيمة القديمة والجديدة في ورقة "Log". يرجى ملاحظة أنه يمكنك تعديل اسم ورقة العمل التي تحتوي على سجل التغييرات بحسب احتياجاتك. 4
بلانك قام بنشر فبراير 9 قام بنشر فبراير 9 عزيزي abouelhassan بس على الملف الخلية باللون الاصفر تم تغيرها ولم تظهر في ولرقة لوجو انظر للملف المرفقt.xls
abouelhassan قام بنشر فبراير 9 قام بنشر فبراير 9 2 ساعات مضت, بلانك said: عزيزي abouelhassan بس على الملف الخلية باللون الاصفر تم تغيرها ولم تظهر في ولرقة لوجو انظر للملف المرفقt.xls غير واضح اخى تم الإجابة على المطلوب أم هذا طلب اخر
بلانك قام بنشر فبراير 10 قام بنشر فبراير 10 (معدل) الملف المرفق لاتظهر اي تغيرات في ورقة اللوج log علما بانني غيرت الخلية باللون الاصفر (15) في العمود (A) كانت 15 وغيرتها الى 151 ولم يحدث اي شيئ في ورقة اللوجlog يخبرني بهذا التغير فما هو السبب؟؟؟؟؟؟؟؟؟؟؟؟ ارجو بانني قد وضحت السؤال وشكرا عي تعبك تم تعديل فبراير 10 بواسطه بلانك
abouelhassan قام بنشر فبراير 10 قام بنشر فبراير 10 شرح عمل الكود: 1. يتم تعريف متغير `PreviousValue` كمتغير يخزن القيمة السابقة للخلية التي تم تغييرها. 2. الجزء الرئيسي من الكود يأتي في الدالة `Worksheet_Change`، والتي تقوم بتنفيذ الإجراءات التالية: - تحديد ما إذا كانت الخلية المغيرة واحدة أو مجموعة خلايا، وإذا لم تكن فإن الدالة تخرج. - التحقق مما إذا كان التغيير يحدث داخل نطاق الخلايا المستخدمة في ورقة العمل. - تعطيل حدث تغيير الخلية مؤقتًا لتجنب تشغيل الكود بشكل لا نهائي. - إذا كانت القيمة الجديدة مختلفة عن القيمة السابقة، فإنه يتم استدعاء الدالة `LogChanges` لتسجيل التغيير. 3. الدالة `LogChanges` تقوم بتسجيل التغيير في ورقة "Log" عن طريق إضافة تاريخ ووقت التغيير، وعنوان الخلية المتأثرة، والقيمة القديمة، والقيمة الجديدة. بهذه الطريقة، يتم تعقب التغييرات التي تحدث في الخلايا وتسجيلها في ورقة مخصصة تسمى "Log". إذا لم يعمل الكود، قد يكون هناك عدة أسباب لذلك، هي بعض النقاط التي يجب التحقق منها: 1. **التأكد من تمكين ماكرو VBA**: تأكد من أن الوضع الموجود فيه Excel يسمح بتشغيل ماكرو VBA. يمكنك التحقق من ذلك في قسم إعدادات الأمان في Excel. 2. **التحقق من وجود ورقة العمل "Log"**: تأكد من أنه تم إنشاء ورقة العمل "Log" بالطريقة الصحيحة وأن الاسم مكتوب بالشكل الصحيح. 3. **التحقق من الكود الذي تم لصقه في وحدة الفبا**: تأكد من أن الكود تم لصقه في وحدة الفبا الصحيحة ولم يتم تعديله بطريقة تؤثر على عمله. 4. **تفعيل الأحداث في Excel**: تأكد من أن الأحداث مفعلة في Excel. يمكنك التحقق من ذلك بالتأكد من أن خيار "EnableEvents" مفعل في الكود. 5. **اختبار الكود خطوة بخطوة**: يمكنك استخدام محرر VBA لتنفيذ الكود خطوة بخطوة باستخدام زر التشغيل F8، وذلك لمعرفة ما إذا كان هناك أي أخطاء.
بلانك قام بنشر فبراير 10 قام بنشر فبراير 10 اخي العزيز شكرا على الشرح ولكن انا لست خبيرا بالاكواد فانا لا اريد الشرح ولكن اريد ان يعمل معي .... اريد من حضرتك رؤية الملف السابق لي هل الكود في موضعة الصحيح واذا كان كل شيئ صحيح فلماذا لايعمل؟ ارجو تعديله وان ترسلة لي وشكرا لحضرتك وعلى صبرك معي
بلانك قام بنشر فبراير 10 قام بنشر فبراير 10 شكرا استاذي abouelhassan السبب كان وضع الكود بطريقة خاطئة وتم الحل وشكرا للمرة المليون
abouelhassan قام بنشر فبراير 10 قام بنشر فبراير 10 10 دقائق مضت, بلانك said: شكرا استاذي abouelhassan السبب كان وضع الكود بطريقة خاطئة وتم الحل وشكرا للمرة المليون الفائده أن تعمل بيدك اخى وتتعلم الف مبروك نحن فى الخدمة اى وقت احترامى 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.