اولین برنامه VBA | آموخته هایتان را بصورت عملی آزمون نمایید

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

پیش نیازهای آموزشی این بخش:
ویرایشگر کد VBA
ماژول در VBA
متغیر در VBA
ثابت در VBA
عملگرهای VBA
اولویت عملگرها
روال در VBA
توابع توکار VBA
پنجره Immediate (آنی)

در آموزش های قبلی سایت در مرحله اول با ویرایشگر VBE بعنوان ابزار نوشتن کد در بسته Office، ماژول بعنوان محل ذخیره کدها، متغیرها بعنوان محل ذخیره داده ها و ثابت ها آشنا شدیم. دانستیم که با ترکیب عملگرها با متغیرها و ثابت ها می توانیم عبارات منطقی و ریاضی ایجاد نماییم. در مرحله بعد با روال ها آشنا شدیم و یاد گرفتیم که روال دنباله ای نامگذاری شده از دستورها است که بعنوان یک بخش واحد اجرا می شود. در نهایت نیز با برخی از توابع داخلی توکار پرکاربرد VBA آشنا شدیم.

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

اولین برنامه VBA یک برنامه ساده و ابتدایی می باشد، اما همین برنامه ساده و ابتدایی در تقویت یادگیری موضوعاتی که تا این لحظه فراگرفته اید نقش مهمی را ایفا می نماید.

شما باید زمانی را صرف درست کردن این برنامه ها کنید چون که تمرین باعث می شود که بیشتر با محیط VBA آشنا شوید و به سرعت مطالب برنامه نویسی را هضم نمایید.

نکته
در همه پروژه ها سعی خواهیم کرد که مراحل تکامل اصولی یک برنامه رایانه ای را دنبال نماییم تا بدین ترتیب بتوانیم مهارت های برنامه نویسی خود را بصورت اصولی پیاده سازی و اجرا نماییم.

پروژه ۱ : اولین برنامه VBA

هدف برنامه

محاسبه توان دوم عدد دریافتی از کاربر و نمایش نتیجه محاسبات به کاربر

تحلیل هدف

هدف این پروژه را می توان به جملات زیر تقسیم نمود:

  • دریافت عدد از کاربر
  • محاسبه توان دوم
  • نمایش نتیجه محاسبات به کاربر

جملات کوتاه شده بالا کار ما را برای نوشتن برنامه راحت می نماید. هر یک از جملات کوتاه بالا نمایانگر یک وظیفه (کار) در برنامه نویسی می باشند.

وظیفه اول – دریافت عدد از کاربر

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

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


Dim strUserInput As String

متغیر strUserInput یک متغیر از نوع داده رشته ای String می باشد. علت انتخاب نوع داده String این است که مقدار بازگشتی تابع InputBox از نوع داده رشته ای String می باشد و نمی تواند در نوع داده دیگری (به استثناء نوع داده Variant) ذخیره گردد.

برای مطالعه بیشتر در مورد نوع داده ها در VBA می توانید این صفحه را مشاهده نمایید.

در صورتی که نوع داده متغیر strUserInput را به اشتباه از نوع داده عددی (بعنوان مثال Integer) انتخاب نمایید و کاربر مقدار غیرعددی وارد نماید خطای کامپایلر عدم تطابق نوع داده (Error 13) مطابق شکل زیر توسط کامپایلر ایجاد و برنامه شما متوقف خواهد گردید.

خطای شماره 13 در اکسل (Run-time error 13)
بروز خطای شماره ۱۳ بهنگام تخصیص مقدار اشتباه به متغیر در اکسل (پنجره خطا در اکسس می تواند متفاوت از این پنجره باشد)

حالا که متغیر strUserInput را اعلان نموده ایم می توانیم مقدار بازگشتی تابع InputBox را با استفاده از کد زیر در آن ذخیره نماییم.


strUserInput = InputBox("عدد موردنظر خود را براي محاسبه توان دوم وارد نماييد")

توجه داشته باشید که ویرایشگر VBE از یک ویژگی تکمیل خودکار پیشرفته و همچنین نمایش اطلاعات و ویژگی ها بهره گیری می نماید.

شما می توانید به هنگام تایپ کد از ویژگی تکمیل خودکار برای کاهش بروز خطاهای تایپی و سرعت در نوشتن کدها و از ویژگی نمایش اطلاعات در مورد توابع و اشیاء برای نوشتن کدهای صحیح بهره بگیرید.

بعنوان مثال بهنگام نوشتن تابع InputBox ویرایشگر VBE اطلاعاتی را مانند شکل زیر نمایش خواهد داد:

ویژگی پیشرفته VBE در نمایش اطلاعات تابع InputBox
VBE اطلاعات تابع InputBox را بعد از تایپ پرانتز اول نمایش خواهد داد.

طبق اطلاعاتی که VBE برای تابع InputBox نمایش می دهد این تابع مقدار بازگشتی نوع String دارد و ۷ آرگومان دارد که فقط آرگومان اول آن (Prompt) اجباری می باشد.

وظیفه دوم – محاسبه توان دوم

برای انجام وظیفه دوم اولین برنامه VBA ما باید از عملگر ریاضی توان برای محاسبه توان دوم عدد دریافتی از کاربر استفاده نماییم. در اینجا نیز مانند وظیفه اول به یک متغیر برای ذخیره مقدار توان دوم احتیاج داریم.

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


Dim strUserInput As String
Dim intCalculatedNumber As Integer

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


intCalculatedNumber = strUserInput ^ 2

وظیفه سوم – نمایش نتیجه محاسبات به کاربر

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


MsgBox intCalculatedNumber
آیا می‌دانید:

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

آماده سازی برنامه جهت اجرا

در مراحل قبلی، هدف اولین برنامه VBA خود را به وظایف تقسیم نمودیم. حالا نوبت آن است که برنامه خود را جهت اجرا آماده نماییم.

انتخاب برنامه میزبان

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

برنامه میزبان می تواند یکی از برنامه های بسته آفیس باشد که VBA را پشتیبانی می نماید. ما در اولین برنامه VBA اکسل (Excel) را بعنوان برنامه میزبان انتخاب نموده ایم.

قبل از ادامه به ایجاد ماژول برای ذخیره کدهای اولین برنامه VBA نحوه اجرای ماکرو در اکسل را حتما از طریق این لینک مطالعه نمایید.

ایجاد ماژول برای ذخیره کدها

حال باید برای ذخیره کدهای خود یک ماژول را انتخاب نماییم. ما در اولین برنامه VBA شیء اکسل ThisWorkbook را انتخاب نموده ایم.

با دوبار کلیک روی شیء ThisWorkbook پنجره کدنویسی برای این شیء مطابق شکل زیر فعال خواهد گردید.

نمای نوار عنوان VBE وقتی که شیء ThisWorkbook در حالت انتخاب قرار دارد
نوار عنوان VBE وقتی که شیء ThisWorkbook در حالت انتخاب قرار دارد نام شیء انتخاب شده را نمایش می دهد. در این حالت کدهایی که در پنجره کدنویسی تایپ شوند در شیء انتخابی ذخیره خواهند شد.

ایجاد روال برای اجرای برنامه

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

اگر مطالب قبلی سایت درباره روال ها را مطالعه کرده باشید، اشاره کردیم که VBA از روال ها برای دسته بندی دستورهایی که هدف مشترکی را دنبال می نمایند استفاده می نماید.

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


Sub myFirstVbaProgram()

End Sub

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

در صورتی که در ویرایشگر VBE پس از تایپ کلمه کلیدی Sub نام آن (myFirstVbaProgram) را تایپ نمایید و سپس کلید Enter را فشار دهید، VBE بصورت خودکار بدنه روال را برای شما ایجاد می نماید.

کدهای اولین برنامه VBA خود را به شکل زیر در بدنه روال myFirstVbaProgram تایپ نمایید.


Sub myFirstVbaProgram()

Dim strUserInput As String
Dim intCalculatedNumber As Integer

    strUserInput = InputBox("عدد موردنظر خود را براي محاسبه توان دوم وارد نماييد")
    intCalculatedNumber = strUserInput ^ 2
    MsgBox intCalculatedNumber

End Sub

اجرای برنامه

برای اجرای اولین برنامه VBA از ویرایشگر VBE را ببندید و مطابق شکل زیر از سربرگ توسعه دهنده (Developer) روی گزینه Macros کلیک نمایید.

کلید Macros در سربرگ Developer نرم افزار اکسل
کلید Macros در سربرگ Developer را انتخاب نمایید.

در پنجره Macro باز شده با انتخاب ماکروی ThisWorkbook.myFirstVbaProgram و کلیک روی کلید Run مطابق تصویر زیر اولین برنامه VBA خود را اجرا نمایید.

اجرای ماکرو در اکسل (Run macro in excel)
ماکرو را انتخاب نمایید و سپس روی گزینه Run کلیک نمایید.

تبریک! شما اولین برنامه VBA خود را اجرا نموده اید.

نمای اولین برنامه VBA پس از اجرا
می توانید با وارد نمودن عدد دلخواه و کلیک روی گزینه OK نتیجه را مشاهده نمایید.

دانلود فایل اکسل اولین برنامه VBA

دیدگاهتان را بنویسید