ابومؤنس قام بنشر فبراير 23, 2004 قام بنشر فبراير 23, 2004 بسم الله الرحمن الرحيم في هذا الجزء سيكون الدرس عن التعديل في اوامر الماكرو . وادخال اوامر جديده مثل اظهار رسائل للمستخدم .وقبل ان نبدا اود ان الفت الاخوة الي انني وجدت اخطاء في برنامج المعلم , ولعلها ان تكون فرصة جيدة لتصحيح تلك الاخطاء ومنها معرفة كيفية التعامل وادخال اوامر جديدة في اوامر الماكور التي قمنا بتسجيلها ,,وسوف اقوم بتنزيل النسخة المعدلة الصحيحة بعد انتهاء دروس التنسيقات . ان شاء الله تعالي ,الرابط للبرنامج المعلم http://www.officena.net/ib/index.php?showtopic=1748اضافة تعديلات علي اوامر الماكرومازال الدروس حول الزر (فرز الاسماء) الموجود في صفحة(كشوف الدرجات). افتح قائمة(ادوات) ثم (ماكرو) ثم (وحدات الماكرو) ليفتح لك قائمة باسماء الماكروات الموجودة في البرنامج اختار (فرز_الاسماء) ثم انقر (تحرير) ليفتح لك صفحة التحرير الخاصة بهذا الماكرو . اترك السطور التي في الاعلي ذات اللوان الاخضر . تلاحظ عدد السطور التي باللوان الاسود هو ستة سطور , السطران الاولي والثانية , هما من ضمن التعديلات التي قمنا باضافتهما , وسنتحدث عنهما في وقت لاحق تحت عنوان اضافة رسائل للمستخدم . باقي السطور الاربعة هي التي تقوم بتحديد الخلايا المراد فرزها واجراء عملية الفرز ,, هنا يوجد الخطاء الاولي في هذا الزر ,, اغلق صفحة التحرير ثم جرب النقر فوق الزر (فرز الاسماء) ماذ تلاحظ ؟ يتوقف الماكرو عن العمل ويظهر رسالة نصها " تتطلب العملية تماثل الخلايا المدمجة" ويخيرك بين ثلاثة ازرار هي (End) لوقف تنفيذ الماكرو , (Delbug) لفتح صفحة التحرير وتصحيح الاخطاء, (Help) للمساعدة ,,انقر فوق الزر الاوسط (Delbug) ستجد ان صفحة التحرير قد فتحت ووضع شريط اصفر حول السطران الرابع والخامس لتحديد موقع الخطاء ,تحليل الخطاء من خلال قراء الرسالة التي ظهرت وتظليل السطران باللوان الاصفر , نجد ان الخطاء يكمن في نطاق الخلايا المعدة للفرز , افتح صفحة(كشوف الدرجات) ولاحظ ان نطاق الخلايا التي يجب ان يكتب فيها اسماء الطلاب هي (B11:B36) والنطاق المحدد داخل الماكرو هو(B10:B44) واذا دقدنا النظر جيدا في الخلية(B10) تجد انها مدمجة مع الخليتين (B8) والخلية (B9) ولذلك فان عملية الفزر لا تتم ,, تصحيح الخطاء نريد الان القيام بتصحيح هذا الخطاء , وتعديل نطاق الخلايا التي تحتوي علي اسماء الطلاب , واود ان اورد هنا ملاحظة , وهي انني عندما قمت بتعديل نطاق الخلايا المخصص لادخال اسما الطلاب من النطاق الاول (B10:B44) الي النطاق الجديد (B11:B36) لم يتم اضافة هذة التعديلات في صفحة الماكرو. وظل الخطاء قائم ,,,لا يفترض بنا هنا حذف الماكر واعادة عملية التسجيل من جديد , اذ يمكننا تصحيح الخطاء السابق وادخال النطاق الجديد ,, واليك الخطوات بعد فتح صفحة تحرير الخاصة بالماكرو .1- الذهاب الي السطر الثالث ( التعديلات في السطور التي لونها اسود) وضع المؤشر عند نطاق الخلايا بعد كلمة Range وتغير النطاق السابق (B10:B44) بالنطاق الجديد (B11:B36) .2- الذهاب الي السطر الرابع ايضا بعد الكلمة Range وغير (B11) بدلا من (B10) .3- من اجل ان يتم التركيز بعد عملية الفزر علي اول خلية لكتابة الدرجات , نعدل موقع هذة الخلية ,في السطر السادس , نكتب (C11) بدلا من (C10) . بعد تصحيح الاوامر الموجهة للماكرو نقوم الان بتجربة الماكرو بعد التعديلات الجديدة ستجد انة يعمل بشكل صحيح ولان تظهر الرسالة السابقة , اضافة رسالة للمستخدمان السطران الاول والثاني هما المسؤلان عن ظهورالرسالة للمستخدم , وطبيعة عمل الزر هي التي فرضت علينا ادماج مثل هذة الرسالة , وذلك لتنبية المستخدم الي ضرورة عدم كتابة درجات الطلاب قبل عملية الفرز لانة لن يتم فزر هذة الدرجات مع فزر الاسماء وبالتالي فعند فزر الاسماء وتغير مواقع الاسماء بعد عملية الفرز _ لانها ستفرز تصاعدا _ فان الدرجات ستظل في موقعها السابق . وقد يسال شخص ما عن سبب تخصيص السطران الاول والثاني للرسالة , ان الفلسفة التي يقوم علي الماكرو ( الكود) عند عملية التشغيل هي تنفيذ الاوامر حسب ترتيبها التسلسلي من السطور العلوية الي السطور السفلية , والدليل علي ذلك . انه اذا وجد خطاء في السطور السفلية لاي ماكرو , تجد الماكور ينفذ الاوامر الصحيحة الي ان يصال الي موقع الخطاء فيتوقف عن العمل ويظهر للمستخدم رسالة الخطا ويحدد ذلك السطر باللوان الاصفر . وبيما اننا بريد اظهار تلك الرسالة للمستخدم قبل عملية الفزر اي قبل السطور المسؤلة عن عملية الفزر نفسها وهي السطور الاولي طبعا . فلو اردنا ان تظهر تلك الرسالة في نهاية العملية لادرجناها في السطور الاخيرة . فموقع ادراج الرسالة هو الذي يحدد ترتيب ظهور تلك الرسالة ,, لكتابة الرسالة نستخدم الدالة (MsgBox) , سيكون لنا حديث عن هذة الدالة وشرح تفصيلي لها ولوسائطها ,, لاادراج الرسالة اليك الخطوات :1- ضع الموشر عند نهاية السطر الذي تريد بعدة ادراج سطرا جديد . انقر (انتر)2- بعد ادراج سطر جديد اضف الكود التالي Msg="اكتب هنا نص الرسالة" لاحظ ان المكتوب بيت الفاصلتين هو ما سيظهر للمستخدم علي شكل رسالة , السطر الثاني والذي يحدد شكل الرسالة وطبيعة الازرار فيها . وتجد انة تحدد لها زران هما (OK) و (Cancel) , وهنا يكمن الخطاء الثاني في البرنامج , حيث انة من المفترض عند نقر المستخدم زر (Cancel) الا تتم عملية الفزر , ولكن الخطاء هنا انةعند النقر علي احد الزرين تتم عملية الفزر , تصحيح الخطاء وادراج سطور جديدة لتصحيح الخطاء السابق اتبع الخطوات السابقة : 1- ضع المؤشر عند الفاصلة التي بالوان الاخضر وانقر (انتر) لاضاف سطر جديد . 2- في السطر الجديد اكتب الكود التالي : Dim Ans As String الاعلان عن المتغير (Ans) بواسطة الامر(Dim) 3-ضع المؤشر عند السطر الثالث وانقر (انتر) لاضافة سطر جديد . واكتب الكود التالي : If Ans = 2 Then Exit Sub End If وهذا السطر يجبر الماكرو علي الخروج عن تنفيذ باقي الاوامر الموجودة في السطور السفلية عندما يقوم المستخدم باختيار النقر فوق الزر (Cancel) . وهذا هو المفترض ان يحصل عند النقر فوق الزر حتي لا تتم عملية الفزر ,اذا لم يعمل الزر (فرز الاسماء ) بعد هذة التعديلات , لا تخف باذن الله تعالي ساضع نسخة من برنامج المعلم بعد هذة الاضافات في المنتدي لمزيد من الفائدة ,,, تستطع الان تصحيح اي خطاء تجدة في الماكرو بدلا من حذف الماكرو واعادة تسجيلة من جديد وخصوص اذا كان عمل الماكرو طويلا . وتستطيع ادراج سطور جديدة وكتابة رسال للمستخدم ,, سنتحدث في الدرس القادم عن كتابة ماكرو من الصفر دون الاعتماد علي ادة (تسجيل الماكرو) وكذلك ربط الازرار بالماكروات التي تم تسجيلها , وبالله التوفيق
ابومؤنس قام بنشر فبراير 23, 2004 الكاتب قام بنشر فبراير 23, 2004 السلام عليكم ورحمة الله وبركاتة ,, تواصلا مع الموضوع السابق . ستجد في الوصلة التالية مثلا عن استخدام الدالة (InputBox) تكلمنا في الدرس السابق عن الدالة (MsgBox) . والدالة الاولي تقوم بعرض مربع ادخال ليقوم المستخدم بادخال كلمة السر , فاذا كانت صحيحة اكمال الماكرو بقية الاوامر , واذا كانت خطاء يتوقف عن العمل . http://www.officena.net/ib/index.php?showtopic=1895 وبالله التوفيق
الردود الموصى بها