نکات کاربردی در خطایابی کدهای VBA

نکات کاربردی در خطایابی کدهای VBA

اگر شما از جمله افرادی باشید که در محیط نرم افزار های آفیس شامل اکسس یا اکسل به برنامه نویسی VBA می پردازید حتما متوجه شده اید که بروز خطادر فرآیند کد نویسی چه در حین درج کدها و چه در حین اجرای کدهای نوشته شده امری اجتناب ناپذیر است .

اگر چه داشتن برنامه ای عاری از هر گونه خطا یم هدف مطلوب است اما در بسیاری از موارد دست یافتن به همچین برنا مه ای اگر نگوییم غیر ممکن اما بدون شک بسیار سخت است .

پس شما به عنوان یک برنامه نویس همیشه این نکته را مد نظر قرار دهید کهیک برنامه مناسب  برنامه ای ست که تمامی خطاهایی  راه ممکن است در حین اجرای برنامه توسط برنامه نویس پیش بینی شده و برای مواجهه با این خطا ها راه حلی در نظر گرفته شود.

خطایابی در VBA

فرآیندی که توسط آن برنامه نویس با استفاده از امکاناتی که  برنامه ویرایشگر کدهای وی بی ای در اختیار وی قرار می‌دهد می‌تواند به بررسی و پیش بینی خطاهایی  بپردازد که ممکن است در حین اجرای برنامه توسط کاربر به وقوع بپیوندد مقرهای وقوع هر خطای احتمالی یک سناریوی  مناسب در نظر بگیرد.

اما در این بین برای ایجاد یک ساختار خطا یابی مناسب بایستی بعضی از نکات توسط برنامه نویس مد نظر قرار بگیرد که در این پست اموزشی به صورت فهرست وار به این نکات اشاره می کنیم

 

خطایابی در vba

شناخت انواع خطاها در VBA

به طور کلی در فرایند کار با کد های VBA چه در حین درج کد ها و چه در حین اجرای آن ها سه نوع خطا می تواند رخ بدهد این خطاها عبارتند از:

        Syntax Error

  این خطا ها خطاهای هستند که ممکن است توسط برنامه نویس و در حین تایپ قطعات کد در لابلای خطوط مختلف به صورت ناخواسته توسط برنامه نویس ایجاد شوند. 

منشأ وجود این خطا ها می تواند بسیار متفاوت باشد از جمله اینکه برنامه نویس در تایپ قطعات کد  دچار غلط املایی شود  و یا اینکه  در قسمتی از ساختار کد که نیاز به یک پرانتز دارد درج این پرانتز در محل مربوطه  درج نشود .  

 برنامه ویرایشگر کد های VBA از این قابلیت برخوردار است که به محض درجه یک خط کد توسط برنامه نویس بلافاصله آن را مورد تجزیه و تحلیل قرار می‌دهد.

به گونه‌ای که اگر کاربر بخواهد از خط کد جاری که در  حال نوشتن آن است به خط جدیدی نقل مکان کند قبل از این کار برنامه ویرایشگر کد های نوشته شده در خط مربوطه را بررسی می نماید تا اگر برنامه نویس خطایی را در ساختار نوشتاری این کدها مرتکب شده باشد  بلافاصله به وی متذکر گردد که این تذکر در قالب پیغام های مختلفی به برنامه نویس ابلاغ می گردد.

 

Runtime Error

                این دسته از خطاها همانطور که از نام آنها پیداست در هنگام اجرای برنامه شما و نیز اجرای قطعات کد که درون برنامه درج شده است رخ می دهند.

منشأ خطاها تا حدود زیادی می‌توانند ارتباطی به قطعات کد شما نداشته باشد بلکه خطا از سوی کاربری که از برنامه شما استفاده می کند رخ دهد . 

به عنوان مثال فرض نمایید که شما در یک تکست باکس از کاربر خواسته اید  که کد ملی خود را وارد نمایید و کاربر به جای وارد نمودن اعداد به عنوان کد ملی به طور سهوی یا عمدی حروف را در کادر مربوطه وارد کند.

در این حالت برنامه دچار خطا شده و از آنجا که نمی تواند اطلاعات وارد شده را مورد تجزیه و تحلیل قرار دهد به کاربر اعلام خطا می نماید.

هر چند که در فرآیند ورود اطلاعات در مثال فوق توسط کاربر گناهی بر گردن شما به عنوان یک برنامه نویس  نمی باشد اما یک برنامه نویس ماهر بایستی وقوع چنین خطایی را از سوی کاربر پیش بینی نموده و برای آن عکس العمل مناسبی را در نظر بگیرد .

        

Logical Error 

این نوع از خطاها که به عنوان  خطاهای منطقی  نامیده می شوند هنگامی رخ می دهد که نتیجه محاسباتی که برای یک هدف مورد نظر خود طراحی نموده با آنچه که عقل و منطق حکم می کند مطابقت نداشته باشد.

به عنوان مثال فرض نمایید که شما دو تکست باکس بر روی یک فرم قرار داده اید و از  کاربر  می خواهید که دو عدد مجزا را در هر کدام از این تکس باکس ها  وارد نمایند و برنامه خود را به گونه ای طراحی کرده اید که در تکست باکس سوم حاصل ضرب اعداد موجود در تکست باکس های اول و دوم به کاربر نمایش داده شود.

اما وقتی که کاربر تکس باکس های  اول و دوم را با عدد مناسب تکمیل نماید  برنامه شما به جای نمایش حاصل ضرب دو عدد حاصل جمع آن ها را به کاربر نمایش بدهد  در این حالت برنامه شما دچار یک خطای منطقی شده است.

 

بنابراین آنچه که از آن به عنوان فرآیند خطایابی یا          Debugging   برنامه نویسی VBA از آن یاد می کنیم شامل مراحل مختلفی است که با استفاده از آن به بررسی و پیشگیری  از وقوع هر کدام از ۳ خطای فوق می پردازد.

 

همانطور که قبلاً و در ابتدای مطلب ذکر نمودیم  یک برنامه خوب برنامه ای  است که دارای حداقل میزان خطا بوده و از طرفی برای همین حداقل‌ها نیز سناریوهای مناسب  پیش بینی شده باشد.

در ادامه به بررسی  ۸ نکته ای  می پردازیم که با استفاده از آنها و با رعایت این موارد می توانیم برنامه ای را ایجاد نماییم که دارای حداقل میزان خطا در حین اجرا باشد.

 

– استفاده از عبارت      Option Explicit    در ابتدای تمامی ماژول ها

 با درج عبارت  Option Explicit در ابتدای یک ماژول  ویرایشگر محیط کد ها شما را به عنوان یک برنامه نویس مجبور می کند تمامی متغیرهایی را که قرار است در کل ماژول  از آنها استفاده نمایید را در ابتدا برای ویرایشگر تعریف نمایید.

تعریف یک متغیر شامل تعیین نام مناسب برای آن و تعیین نوع دیتای ذخیره شده در آن می باشد.

 با استفاده از این روش تا حدود زیادی جلوی وقوع خطاهای احتمالی در حین اجرای کدها که می تواند ناشی از عدم تعریف متغیر مناسب و یا عدم  درج اطلاعات مناسب برای یک متغیر باشد  را بگیرید . 

به عنوان مثال به متغیر زیر دقت نمایید.

dim my cod as byte 

ما در اینجا متغیر به نام my code تعریف نموده و نوع آن را از نوع  Byte در نظر گرفته ایم.

حال اگر چه ما و یا کاربر ما  عددی بالاتر از ۲۵۵  را وارد این متغیر کنند برنامه ما به طور خودکار اعلام خطا می نماید.

و با هایلایت کردن متغیر تعریف شده فوق به ما اعلام می نماید که اطلاعات درج شده برای این متغیر با نوع داده ای  که برای آن تعریف شده از همخوانی ندارد.

بنابراین ما به راحتی می توانیم با تعریف کردن متغیرهای خود در صورت بروز خطا در این متغیر ها که می‌تواند حالات مختلفی داشته باشد این امکان را برای برنامه فراهم می‌آوریم که بلافاصله نسبت به شناسایی محل خطا اقدام نموده  و ما را در جریان امر قرار دهد و کار خطایابی کدهای VBA را راحت تر نماید . 

 

– استفاده از indentation

خاصیت indentation خاصیتی است که  با استفاده از آن می‌توانیم خطوط کد های خود را دچار فرورفتگی هایی  بکنیم.  

اگرچه این امر یک امر لازم و ضروری برای ویرایشگر کد ها نمی باشد و تاثیری در عملکرد آن و تفسیر کد های نوشته شده توسط ما برای این برنامه ندارد اما فایده ای که می تواند داشته باشد برای ماست چرا که در بررسی کدهای خود به راحتی می‌توانیم قسمت های مختلف  کد موجود در یک ماژول را که قرار است با همدیگر یک عملکرد خاص  انجام دهند را ایجاد حالت فرورفتگی از بقیه متن کد متمایز بکنیم و  از این طریق علاوه بر زیبایی بصری سهولت بررسی کدها را فراهم آوریم

 

در به کار بردن عبارت     On Error Resume Next         احتیاط به خرج دهید

عبارت    On Error Resume Next      عبارتی است که در فرآیند خطایابی کدهای VBA وارد می شود و  با استفاده از آن به ویرایشگر کدهای برنامه خود می گوییم که اگر در حین اجرای کدها  با خطایی مواجه شد این خطا را نادیده گرفته و خط بعدی کد را به اجرا درآورد.

اگرچه استفاده از این عبارت بجای خود می‌تواند مفید و سودمند باشد اما استفاده نابجا از آن می‌تواند موجب عملکرد نامطلوبی در کل برنامه ما داشته باشد.

بنابراین زمانی باید از این عبارات درون کد های خود بهره ببرید که مطمئن باشید که عملکرد این عبارت تاثیری در عملکرد کلی  برنامه شما ندارد.

 

   –  استفاده از توضیحات یا همان Comments 

کامنتها  توضیحاتی هستند که از سوی برنامه نویس برای بیان مفهوم یک روال و روش خط از خود به محیط ویرایشگر کد های اضافه می شود نقطه ای که بایستی در نظر بگیرید این است که استفاده از این کامنت ها درون کدهای شما هیچ خللی در اجرای کد ها توسط ویرایشگر ایجاد نمی کند.

از سوی دیگر این کامنت ها به هیچ عنوان حجم نهایی برنامه شما اضافه نخواهد کرد اما در عوض با استفاده از این کامنت ها  به راحتی میتوانید به کاربر بگویید که این روال و یا این تابع  قرار است چه عملی را انجام بدهد.

و در خطایابی کدهای VBA به راحتی با استفاده از کامنتها می توانید متوجه شوید که آیا قطعه کد به درستی عمل می نماید یا خیر 

بنابراین تا آنجا که می توانید با استفاده از کامنت ها کد های خود را برای کاربران خود قابل فهم نمایید.

 

  • روال ها و توابع خود را ساده نمایید. 

در فرآیند ایجاد یک  ساب روتین و  یا   یک تابع باید این نکته را در نظر بگیرید که تا آنجا که می توانید از ایجاد پیچیدگی‌های غیر ضروری در روالهای  خود صرف نظر نمایید.

اگر قرار است که یک کار پیچیده توسط برنامه شما انجام شود در ابتدا لازم است که این کار پیچیده را به چندین و چند کار ساده تجزیه نمایید و سپس انجام هر کدام از این کارهای ساده را به چند روال  یا تابع بسپارید. 

برآیند نهایی این کارهای ساده در انتها موجب به سرانجام رسیدن کار پیچیده ای است که هدف برنامه شما خواهد بود. 

مزیت این کار این است که وقتی شما  بعنوان مثال یک روال با ۲۰ خط کد دارید و با خطایی مواجه شده و وارد فرآیند خطایابی کدهای VBA می شوید  اگر این روال را بتوانید تبدیل به ۵ روال مجزا کنید بررسی و کنترل عملکرد ۵ روالی که هر کدام دارای خطوط کد محدودی هستند بهتر و ساده تر از زمانی است که بخواهید یک روال حاوی تعداد زیادی کد را بررسی نمایید . 

 

  • با امکانات خطایابی اکسل آشنا شوید . 

شاید جای این نکته نه در انتهای این مطلب که باید بعنوان مهمتری نکته در ابتدای این مطلب آورده می شد . 

اما فارغ از تقدم و تاخر نکات ذکر شده باید این نکته را در نظر بگیرید که برنامه ویرایشگر کدهای VBA  دارای امکانات متعدد و بی نظیری برای مدیریت و خطایابی کدهای VBA می باشد .

آشنایی کامل با این امکانات از دو جهت می تواند برای شما مفید فایده واقع شوند .

اول اینکه با استفاده از این امکانات و آشنایی با عملکرد آنها به راحتی می توانید شرایطی را فراهم آورید که امکان بروز خطاهای احتمالی را به حداقل ممکن برسانید .

دوم اینکه بعد از اینکه با یک خطا مواجه شوید برای خطایابی کدهای VBA می توانید از این ابزار بهترین استفاده را در جهت برطرف نمودن خطاها بنمایید .

در آینده بطور مفصل در خصوص امکانات موجود در ویرایشگر کدهای VBA که می توانید از آنها در خطایابی کدهای VBA از آنها استفاده نمایید آموزش هایی در این سایت قرار داده خواهد شد . 

 

 

 

آموزش اکسل بازدید : 411 views ۲۲ بهمن, ۱۳۹۷ ۰