بسم الله والحمد لله والصلاة والسلام على رسول الله
أهلا ومرحبا بكم أخوانى الكرام من جديد
كنت قد قدمت فكرة بسيطة وسهلة الاستخدام لتظليل الخلية النشطه بطريقة آمنة
وهذا الموضوع من هنا
فهل يمكن القيام بهذا الأمر بإستخدام الأكواد فقط
الإجابة نعم لكن هذا سيكون بطريقة احتيالية
لماذا
لأن استخدام الأكواد يغيير من النتائج بشكل جذرى
أولا ما سأفعله هو تلوين الخلية النشطة وليس تظليلها كما بالسابق
حودة (أبو الدهب) بيقولى انت هتتفزلك علينا ما هيا هيا
هرد وأقولوا غشيم احودة
شوف احودة استخدام التنسيق الشرطى دا مجرد لون ظاهر فقط والخلية نفسها لها لون أخر
أما ما سنفعله بالكود هو جعل الخلية تكتسب فعليا هذا اللون اللى هو اللون الاخر فى السطر السابق دا
تمام أبو الدهب أغالى أهو بتقولى تمام اهو
اذا سأقدم لكم أفكار للتعامل مع تلك الأمور بشكل مرن
الكود الأول
CODE
Private Sub Worksheet_SelectionChange(ByVal Target As Range)<br />
Static Prng As Range<br />
Static num As Integer<br />
On Error Resume Next<br />
<br />
Prng.Interior.ColorIndex = num<br />
num = Target.Cells(1).Interior.ColorIndex<br />
<br />
Target.Cells(1).Interior.ColorIndex = 6<br />
Set Prng = Target.Cells(1)<br />
End Sub<br />
أولا الكود فى حدث تحديد ورقة العمل انقله انت فى المكان اللى تحبه المهم
بهذا الكود سيتم تلوين أول خلية للنطاق المحدد وعند الانتقال لأى خلية أخرى
سيتم ارجاع اللون الأصلى للخليه السابقه واكتساب الخلية الجديدة لون جديد
لكن نلاحظ امر فطير قصدى خطير (جعان حبتين بس)
ما هو ذلك الامر اسولوم ذلك الامر بأنى لا اعمل على قاعدة بيانات ثابته
أبا البراء بيقولى يعنى ايه انجز مش بحب الرغى
حاضر امستر متقفش بس
فيما معناه ايها الساده انه عند اغلاق الملف وفتحه مرة اخرى
ستجد ان اخر خلية تم تلوينها لن تتغير لسابق عهدها فى زمانها واياماها وشبابها
يعنى هتفضل باللون بتاعها
لماذا
لان الخليه تكتسب اللون بالفعل وليس مجرد تظليل
اذا ما الحل
ممكن ببساطه تغير المتغير num بالكود
بخلية تكون عبارة عن رقم اللون السابق وانتهينا
وفى امر فطير (خطير) تانى وهو لو عايز تغير الوان خلايا لازم تقفل الكود عشان الكود هيرجعه لاصله تانى
وامر فطير (خطير) اخير هنا انا استخدمت colorindex لاختيار الالوان ودا ينحصر بين 56 دون حساب الخلية الفارغه
الامر عائد اليك فى اختيار طريقة التلوين ب colorindex او color او rgb
بس كفاية كدا على الكود دا
حودة رجع يقولى استنى افرض عايز الون اكثر من خلية بدلا من خلية واحده
شوف احوده هو الامر ممكن برضوا لكنه ليس عملى
لماذا
لانك عايز هنا تحفظ اكثر من لون مختلف لاكثر من خلية لارجاعها
بداية كتبت الكود دا لكن طبعا لو هتحدد الصف كله او العمود كله
الموضوع هياخد وقت وممكن يوقف الملف يبقى بلاشه
لكن متزعلوش هقولكم على حاجه احلى
الاعضاء: ايه هيا ياسلولم
سولوم: تلونه الخلايا من اليمين واليسار والاعلى والاسفل مثل
ما هو الهدف فى النهايه هو اظهار مكان الخلية فقط
تعالوا احلوين نشوف الكود التانى
CODE
Private Sub Worksheet_SelectionChange(ByVal Target As Range)<br />
Static Prng As Range<br />
Static num(4) As Integer<br />
On Error Resume Next<br />
<br />
Prng.Cells(1).Interior.ColorIndex = num(0)<br />
Prng.Cells(1).Offset(1).Interior.ColorIndex = num(1)<br />
Prng.Cells(1).Offset(-1).Interior.ColorIndex = num(2)<br />
Prng.Cells(1).Offset(, 1).Interior.ColorIndex = num(3)<br />
Prng.Cells(1).Offset(, -1).Interior.ColorIndex = num(4)<br />
<br />
num(0) = Target.Cells(1).Interior.ColorIndex<br />
num(1) = Target.Cells(1).Offset(1).Interior.ColorIndex<br />
num(2) = Target.Cells(1).Offset(-1).Interior.ColorIndex<br />
num(3) = Target.Cells(1).Offset(, 1).Interior.ColorIndex<br />
num(4) = Target.Cells(1).Offset(, -1).Interior.ColorIndex<br />
<br />
Target.Cells(1).Offset(-1).Resize(3).Interior.ColorIndex = 6<br />
Target.Cells(1).Offset(, -1).Resize(, 3).Interior.ColorIndex = 6<br />
<br />
Set Prng = Target.Cells(1)<br />
End Sub<br />
بالكود دا ياغاليين سيتم تلوين الخلية النشطة وما فوقها وما تحتها وما يمينها وما يسارها
وعند ترك النطاق لحال سبيله يعود النطاق السابق لما كان عليه
طبعا لو الموضوع كان كبير شويه كنت هستخدم حلقة تكرارية
بس هو مش كبير فكدا زى الفل
طبعا نفس ملاحظة الكود الاسبق عن غلق وفتح الملف وممكن برضوا تستغنى عن المتغير num
ب 5 خلايا لحفظ الالوان الاوليه للخلايا
وبقيت الملاحظات الفطيره (الخطيره) السابقة متنطبق هنا
ونكتفى بهذا القدر والى اللقاء احبابى فى الله ونلتقى بإذن الله فى موضوع جديد وفى كل جديد
مع اكاديمية الصقر والى اللقاء