أكاديمية الصقر للتدريب

لوحة التميز الأسبوعي
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
khaled alborene Eslam Abdullah-- لا تميز خلال هذه الفترة YasserKhalil تجزئة الاسماء المركبة وفصلها عن الاسماء العادية اكسيل اسئله واجابات


اعلان هنا
ألعاب فلاش أون لاين
أعلن هنا
أعلن هنا
صفحتنا على الفيس بوك
أعلن هنا



أهلا وسهلا بك زائرنا الكريم في أكاديمية الصقر للتدريب، لكي تتمكن من المشاركة ومشاهدة جميع أقسام المنتدى وكافة الميزات ، يجب عليك إنشاء حساب جديد بالتسجيل بالضغط هنا أو تسجيل الدخول اضغط هنا إذا كنت عضواً .





تعرف على حدث التغير في ورقة العمل Worksheet Change

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



08-07-2019 09:44 صباحا
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 6582
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 19
يتابعهم : 0
يتابعونه : 400
قوة السمعة : 18172
الاعجاب : 620
 offline 

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

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

سنأخذ مثال ونقوم بشرحه لتتضح الصورة

هذا هو الكود الي يمكن وضعه في حدث ورقة العمل ، ويتم ذلك بعمل كليك يمين على اسم ورقة العمل ثم View Code ثم ضع الكود
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1:A10")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
    
    Application.EnableEvents = False
        Target.value = UCase(Target.value)
    Application.EnableEvents = True
End Sub


السطر الأول
Private Sub Worksheet_Change(ByVal Target As Range)

لا يتم في الغالب كتابة هذا السطر بشكل يدوي بل تقوم باختيار الخيار Worksheet من القائمة المنسدلة الموجودة في نافذة الأكواد ، ومن القائمة المجاورة تختار الحدث Change
أي أن الكود سيتم تنفيذه بمجرد إحداث أي تغيير في ورقة العمل

بالطبع إذا ترك الكود بدون تحديد خلايا معينة سيكون عبء على الملف لأنه مع أي تغيير سينفذ الكود ، وفي رأيي إذا كان الأمر كذلك أفضل استخدام المعادلات (إذا كانت بديلاً للأكواد)
عموماً سيتم تحجيم النطاق باستخدام السطر التالي
If Intersect(Target, Range("A1:A10")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub


حيث سيتم الخروج من الإجراء إذا كانت الخلية الهدف لا تقع في النطاق من A1 إلى A10 ، كما سيتم الخروج من النطاق إذا كان عدد الخلايا الهدف أكبر من 1
أي إذا حاولت إحداث تغيير على مجموعة من الخلايا في ورقة واحد لن يتم تنفيذ الكود
فقط سيتم التنفيذ في حالة أن الخلية الهدف (المراد التعديل فيها) تقع ضمن النطاق وتكون خلية واحدة فقط

والدالة Intersect تعني تقاطع (أي تقاطع الخلية الهدف مع النطاق المطلوب التعامل معه)

المطلوب في الكود هو أن يقوم الكود بتحويل حالة الأحرف للكلمات المدخلة في الخلية الهدف لأحرف كبيرة بهذا الشكل
Target.value = UCase(Target.value)


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

لذا ستجد في الكود سطرين أحدهما يوقف هذه المشكلة 
Application.EnableEvents = False

حيث يعني إيقاف تمكين الأحداث إلى حين اكتمال عمل الكود ، لكي لا ينفذ الكود مرة أخرى أثناء عملية التغيير في الخلية الهدف

وبالطبع لابد من إرجاع هذه الخاصية مرة أخرى لأنه لو تم تجاهل الخاصية لن يعمل الكود في حدث التغير إلا بعد إغلاق الملف وفتحه مرة أخرى أو تنفيذ هذا السطر في النافذة الفورية أو أي إجراء عادي
Application.EnableEvents = True


أرجو أن تكون المعلومة مفيدة لكم ، وفقني الله وإياكم لكل خير

أخوكم في الله / ياسر خليل أبو البراء








الكلمات الدلالية
Change ، Worksheet ، العمل ، ورقة ، التغير ، تعرف ،


 







اخلاء مسئولية: يخلى منتدى أكاديمية الصقر للتدريب مسئوليته عن اى مواضيع او مشاركات تندرج داخل الموقع ويحثكم على التواصل معنا ان كانت هناك اى إنتهاكات تتضمن اى انتهاك لحقوق الملكية الفكرية او الادبية لاى جهة - بالتواصل معنا من خلال نموذج مراسلة الإدارة .وسيتم اتخاذ الاجراءات اللازمة.
سياسة النشر: التعليقات المنشورة لا تعبر عن رأي منتدى أكاديمية الصقر للتدريب ولا نتحمل أي مسؤولية قانونية حيال ذلك ويتحمل كاتبها مسؤولية النشر.



الساعة الآن 10:50 مساء

أعلن هنا
أعلن هنا
أعلن هنا