TOP

VBA-الدرس 2. المصحح (Debugger)

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


افتح Visual Basic Editor (Alt + F11). Create وحدة نمطية فيها واكتب الكود التالي:

 Sub LearningDebug()
    Dim A As Long, B As Long, C As Long, D As Long

    D = 0
    A = 10
    Debug.Print "أ =" + Trim(Str(A))
    B = 15
    Debug.Print "ب =" + Trim(Str(B))
    C = A + B
    Debug.Print "ج =" + Trim(Str(C))
    C = Round(C / 5)
    Debug.Print "Divide С by 5: C = " + Trim(Str(C))  'C مقسومة على 5: C =
    C = Round(C / D) 'سيكون هناك خطأ هنا ، لأنه من المستحيل القسمة على صفر (و D = 0)
End Sub

اضغط على Ctrl + G وستظهر نافذة Immediate في الأسفل. في هذه النافذة ، أثناء تشغيل الماكرو ، يمكنك تغيير قيم المتغيرات ، وتنفيذ تعليمات برمجية مختلفة على VBA ، ولم تتم كتابتها في الوحدة النمطية من قبل.

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

إذا نظرت عن كثب إلى الكود ، فسترى أن المتغيرات A و B و C و D يتم تخصيص أرقام لها. تقوم أسطر "النص" Debug.Print بطباعة النص الذي حددناه في نافذة Immediate المفتوحة سابقًا لمعرفة ما يحدث مع المتغير. Str (A) يحول رقمًا إلى قيمة نصية. و Trim () _ a002 يزيل المسافات على اليمين واليسار منه. عامل التشغيل Round (C) تقريب القيمة وفقًا لقواعد الحساب إلى عدد صحيح (لذلك ، نقوم بتعيين نتيجة الحساب إلى متغير صحيح Long ، مما يعني يجب أن يكون عددًا صحيحًا). في نهاية الكود ، أنشأنا على وجه التحديد موقفًا خاطئًا للتدرب على استخدام مصحح الأخطاء.

قف داخل الكود واضغط على F8 أربع مرات. سيتم تمييز السطر الذي سيتم تنفيذه بعد ذلك باللون الأصفر. تحوم فوق المتغيرات المختلفة. في نفس الوقت ، ستظهر نافذة منبثقة سترى قيمتها. المتغيرات التي لم يتم تعيين قيم لها بعد تساوي الصفر. اضغط F8 مرة أخرى. سيظهر سطر في نافذة Immediate: A = 10 الآن يمكننا تغيير قيمة المتغير A فورًا في نافذة Immediate (على سبيل المثال ، قم بتغييره إلى 8). للقيام بذلك ، في سطر جديد من نافذة Immediate ، اكتب: A = 8 واضغط على Enter. الآن قم بالمرور فوق المتغير A ولاحظ أن قيمته تساوي 8. لترى القيمة دون تحريك الماوس ، يمكنك جعلها تظهر في نافذة Immediate. يتم ذلك على هذا النحو ، أدخل السطر الفارغ من النافذة Immediate:؟ A واضغط على Enter. لافتة؟ في النافذة Immediate يعني نفس Debug.Print في الكود. إنها أسهل وأقصر الكتابة بهذه الطريقة. سترى الرقم على الفور - نتيجة طلبك.

ضع المؤشر على السطر الأخير من التعليمات البرمجية (C = Round (C / D)) واضغط على F9. ستظهر نقطة توقف. يمكنك إزالته بنفس الزر ، لكننا لن نحذفه بعد. اضغط على F5 ، سيقوم البرنامج بتنفيذ جميع الأسطر ويتوقف عند آخر سطر. في نافذة Immediate ، ستظهر رسائل حول تخصيص قيم للمتغيرات. لقد وصلنا إلى السطر الأخير من التعليمات البرمجية. يجب أن يحدث خطأ لأنه يحتوي على قسمة على صفر. اضغط على F8 وانظر بنفسك. في النافذة التي تظهر ، انقر فوق Debug. إذا ضغطت على End ، فسيتوقف تنفيذ البرنامج ونريد إنهاءه.

يمكنك تصحيح الموقف عن طريق تغيير قيمة المتغير D. الآن تساوي الصفر. في نافذة Immediate ، أدخل النص: D = 2 في سطر فارغ واضغط على Enter. الآن ، مع السطر الأخير من الكود ، نقسم ليس على صفر ، ولكن على 2 ، وبالتالي نتجنب الخطأ. اضغط على F5 وسيكمل البرنامج عمله بدون أخطاء.

حاول تغيير الكود وتدرب على استخدام مصحح الأخطاء. صدقني ، ستجعل حياتك أسهل بكثير.