السلام عليكم ورحمة الله وبركاته
إخواني وأحبابي في الله
في كثير من الأحيان عند كتابة الأكواد نحتاج لإنشاء أوراق عمل بناءً على قيم موجودة في عمود أو ما شابه .. فإذا قمت بتنفيذ الكود وعند إنشاء ورقة عمل موجودة بالفعل سيحدث معك خطأ برمجي .. لذا من الأفضل دائماً عند إنشاء ورقة عمل التأكد من وجود ورقة العمل أو عدم وجودها وسيفيدنا في ذلك دالة اسمها ISREF وهي من الدوال الموجودة بالفعل في الإكسيل ويمكن استخدامها بشكل مباشر في ورقة العمل نفسها .. حيث يبتع الدالة اسم ورقة العمل وأي خلية داخلها وليكن A1 ...
فيمكن استخدامها في ورقة العمل بهذا الشكل
CODE
=ISREF(Yasser!A1)<br />
والدالة تعطي القيمة True في حالة أن ورقة العمل موجودة .. ولكنها تظهر لك نافذة بعنوان Update Values في حالة عدم وجودها وظهور هذه النافذة في حد ذاته يعني أن قيمة نتيجة الدالة هي False
سنقوم باستخدام الدالة في محرر الأكواد بطريقة مشابهة تماماً باستخدام دالة Evaluate وهي دالة تستخدم للتعامل مع بعض المعادلات داخل محرر الأكواد .. فيمكنك تخيلها كأنها تساوي علامة يساوي في الخلية في ورقة العمل
CODE
Evaluate(".......")
نلاحظ استخدام دالة Evaluate يليها قوس ثم قوس تنصيص ثم المعادلة التي ستستخدم يليها قوس تنصيص وإغلاق القوس الأول
والمعادلة ستكتب في هذه الحالة مكان النقاط بنفس الطريقة التي تكتب في ورقة العمل ولكن بدون علامة يساوي أي بهذا الشكل
CODE
Evaluate("ISREF(Yasser!A1)")
سنقوم بإضافة قوس تنصيص مفرد قبل اسم ورقة العمل وبعدها لتجنب الخطأ في حالة وجود مسافة في اسم ورقة العمل ، لذا سيكون الشكل النهائي لكيفية استخدام الدالة هي
CODE
Evaluate("ISREF('Yasser'!A1)")
خطوات كتابة الكود
-------------------
>> الآن يمكنك استخدام دالة الشرط IF والتي تقوم باختبار شرط معين (الشرط كما في السطر السابق) يليها كلمة Then ..
>> فإذا تحقق الشرط وكانت قيمة جملة الشرط تساوي True ، فهذا يعني وجود ورقة العمل ، يمكن وضع سطر نخبر محرر الأكواد ونظهر للمستخدم رسالة بأن ورقة العمل موجودة بالفعل بهذا الشكل
CODE
MsgBox "Worksheet Yasser Already Exists", 64
>> السطر التالي سيكون كلمة واحدة وهي كلمة Else والتي تعني أن ما يليها هو ما سيتم تنفيذه في حالة عدم تحقق الشرط False
>> إذا لم تكن ورقة العمل موجودة قوم بإنشاء ورقة عمل توضع في نهاية أوراق العمل الموجودة في المصنف ونسميها بالاسم Yasser
CODE
Worksheets.Add(After:=Sheets(Sheets.Count)).Name = "Yasser"
>> وفي نهاية المطاف لا ننسى أن جملة الشرط IF يلزمها جملة End If لنغلق جملة الشرط
>> ملحوظة : يمكن الإعلان عن متغير من النوع النصي وليكن باسم s .. ثم توضع القيمة النصية Yasser في هذا المتغير واستخدامها في الكود بدلاً من استخدام النص Yasser أكثر من مرة داخل الكود
لتوضيح تلك النقطة دعنا نأخد مثالأ لتفهم كيف تقوم بذلك
في هذا السطر على سبيل المثال
CODE
MsgBox "Worksheet Yasser Already Exists", 64
نريد استبدال القيمة النصية Yasser بمتغير ..
بكل بساطة نقوم بحذف النص Yasser بدون حذف المسافة قبل النص أو المسافة بعد النص ، ثم نضع أقواس تنصيص يليها مسافة ، ثم نضع علامة & والتي تربط النصوص ، ثم نضع مسافة يليها اسم المتغير النصي s ثم مسافة ، ثم نضع علامة & مرة أخرى ، ثم نضع علامة التنصيص مرة أخرى
** في انتظار تفاعلكم ووضعكم للكود بشكل كامل .. فالموضوعات التي تقدم في الفترة الحالية عبارة عن تدريب وتطبيق عملي .. أي أنه عليكم أن تقوموا بالتفاعل والمشاركة بشكل إيجابي
** ملحوظة أخيرة وأرجو ألا ينزعج أحد مني .. لن أقبل بالردود لمجرد الردود أي أنه لابد أن يكون الرد إيجابي ويستفيد منه الأعضاء .. لذا الرجاء الالتزام بهذه النقطة
رابط الملف المرفق من هنا
وفقني الله وإياكم لكل خير
كان معكم أخوكم في الله / ياسر خليل أبو البراء