برنامه نویسی در اکسل – آموزش کدنویسی VBA در EXCEL (گام به گام و تصویری)
![آموزش کدنویسی VBA](/wp-content/uploads/2022/06/vba.png)
برنامه نویسی در اکسل به نوشتن مجموعهای از دستورالعملها اشاره دارد که به اکسل میگوید یک یا چند کار را انجام دهد. هدف از برنامه نویسی در excel این است که شما مجبور به انجام دوباره کارهای مشابه هم نباشید. همچنین میتوانید چندین کار را همزمان و با سرعت بسیار زیاد انجام دهید؛ در حالی که اگر این کارها به صورت دستی انجام میدادید، زمان زیادی از شما گرفته میشد. این دستورالعملها یا کدها، به زبان VBA که زبان قابل درکی برای اکسل است، نوشته میشوند. برای نوشتن یک دستورالعمل در اکسل، میتوان یک کد VBA نوشت یا یک ماکرو در اکسل record کرد. در این مقاله تفاوت VBA و Macro در اکسل را بررسی و اصول اولیه برای برنامه نویسی VBA در اکسل را به شما آموزش میدهیم تا وارد مسیر تبدیل شدن به یک کاربر حرفهای اکسل شوید.
فهرست مطالب
مزایا و اهمیت برنامه نویسی در اکسل
اکسل ابزارهای زیادی را در اختیار شما قرار میدهد، اما با این حال تمام چیزهایی که برای انجام کارهای روزانه خود نیاز دارید را به طور مستقیم به شما ارائه نمیدهد. این چیزها ممکن است شامل ایجاد توابع سفارشی، احرای دستورالعملهای تکراری، خودکارسازی عملیات و… باشد. از این رو کمپانی مایکروسافت زبان برنامه نویسی VBA را به عنوان راه حلی برای پر کردن این شکاف در مجموعه نرمافزارهای خود ارائه کرده است که به کاربران اجازه میدهد تا برنامهها یا دستورات دلخواه خود را برای انجام وظایف مختلف درون برنامه بنویسند. شما با برنامه نویسی در اکسل به کمک VBA میتوانید:
- عملیاتی که باید به طور مرتب انجام دهید را خودکار کنید.
- دستورات سفارشی در اکسل ایجاد کنید.
- مجموعهای از دستورالعملها را چندین بار تکرار کنید.
- تابع سفارشی ایجاد کنید که معمولاً با عنوان تابع تعریف شده توسط کاربر (UDF مخفف User Defined Function) شناخته میشود.
- یک افزونه (add in) سفارشی در اکسل ایجاد کنید.
- و…
اگر هنوز ابتدای مسیر یادگیری اکسل هستید و میخواهید قبل از شروع به برنامه نویسی در excel، با ترفندها و امکانات کلیدی آن آشنا شوید، از مجموعه آموزش کاربردی زیر در فرادرس دیدن کنید:
VBA چیست؟
VBA مخفف عبارت Visual Basic for Applications و یک زبان برنامه نویسی رویداد محور است که شرکت مایکروسافت آن را برای توسعه اپلیکیشنهای خودش یعنی مجموعه Microsoft Office ایجاد کرده اس. برنامه نویسی VBA به شما کمک میکند که فرآیندهای اتوماسیون، Windows API و توابع تعریف شده کاربر در برنامههای آفیس (از جمله اکسل) را توسعه دهید.
به طور کلی زبانهای برنامه نویسی برای برقراری ارتباط شما با کامپیوتر استفاده میشوند. برای مثال شما با برنامه نویسی VBA در اکسل، دستورالعملهای خاصی را به اکسل که روی کامپیوترتان است، ارسال میکنید. نکته دیگر این که زبانهای برنامه نویسی تفاوت قابل توجهی با هم ندارند، بنابراین برای یادگیری زبانی مانند VBA، باید ساختار آن را درک کنید. از آنجایی که این ساختار با ساختار زبانهای انسانی متفاوت است، هنگام نوشتن برنامه با آن نیز با اصطلاحات خاص و متفاوتی روبرو میشوید که باید آنها را یاد بگیرید.
ماکرو (Macro) چیست؟
در کنار برنامه نویسی VBA در اکسل، مفهوم دیگری به نام ماکرو (Macro) نویسی هم وجود دارد که بعضی افراد این رو را با هم اشتباه میگیرند یا فکر میکنند که به یک معنا هستند، اما واقعیت چیز دیگری است. نکاتی که باید درباره مفهوم ماکرو بدانید:
- ماکرو یک زبان برنامه نویسی نیست.
- ماکرو (معمولا) به عنوان مجموعهای از دستورالعملها تعریف میشود که شما از آنها برای خودکارسازی فرآیندهای اکسل استفاده میکنید؛ به عبارت دیگر، ماکرو دنبالهای از دستورالعملهایی است که میخواهید اکسل برای رسیدن به یک هدف خاص دنبال کند.
- VBA یک زبان برنامه نویسی است که میتوانید برای ایجاد ماکروها از آن استفاده کنید.
در واقع ماکروها (Macro) در اکسل برای خودکارسازی کارهای تکراری نوشته میشوند. هنگامی که یک ماکرو Record میشود، VBA یک کد در پس زمینه تولید میکند. برای مثال، برای ارسال یک گزارش از اکسل، یک جدول اکسل باید هر بار مجموعهای از وظایف را انجام دهد. اما با نوشتن یک ماکرو در اکسل، تمام این وظایف به طور خودکار انجام خواهند شد.
تفاوت VBA و Macro
ماکروها با نسخههای قدیمیتر برنامههای آفیس استفاده میشدند و فقط میتوانستند برای اجرای دستورالعملهای خودکار به کار برده شوند. در واقع، اولین برنامههای ماکروی اکسل فقط میانبرهایی برای دستورات رابط کاربری بودند. برای مثال، اگر شما عبارات R (برای “Range”)، N (برای “Name”) و C (برای “Create”) را در رابط کاربری تایپ کرده باشید، با وارد کردن عبارت RNC در ماکرو میتوانید اجرای تمام این فرآیندها را خودکار کنید. این رویکرد شهودی بود، اما نقاط ضعفی هم داشت. به دلیل چنین ضعفهایی، زبان VBA بعدها در سال ۱۹۹۳ میلادی جایگزین این زبان ماکرو شد و از این رو هنوز این تصور اشتباه در بین افراد وجود دارد که VBA را نیز جزئی از زبان ماکرو میدانند. در حالی که VBA در مقایسه با زبان ماکروی، سنتی قویتر و پیچیدهتر است و از این رو یک موفقیت مهم در برنامه نویسی در اکسل محسوب میشد.
مفهوم کد VBA و ماکرو
شما هنگام کار با VBA، کد VBA را اجرا میکنید. این کد VBA اقدامات یا وظایف خاصی را در اکسل انجام میدهد. کد VBA را میتوانید به یکی از دو روش زیر تولید کنید:
- با ضبط کردن اقدامات خاصی که در یک workbook اکسل انجام میدهید (این ضبط کردن با استفاده از Macro Recorder انجام میشود)
- با نوشتن کد VBA در ویرایشگر ویژوال بیسیک (VBE مخفف Visual Basic Editor)
تصویر زیر یک مثال بسیار ابتدایی از کد VBA است. کامنتهای سبزی که در کد نوشته شدهاند توضیح میدهد که این قطعه کد چه کار میکند:
بنابراین اصطلاح «کد VBA» معمولا به مجموعه ای از دستورات VBA اشاره دارد که توسط یکی از این دو روش ایجاد میکنید:
- ضبط ماکرو
- نوشتن کد VBA در VBE
همچنین اصطلاح «ماکرو» معمولا به مجموعه دستورالعملهایی اشاره دارد که اکسل به طور خودکار اجرا میکند.
مقدمه برنامه نویسی در اکسل
قبل از نوشتن هر کدی ابتدا باید اصول اولیه آن را بدانیم. مفاهیم زیر برای شروع میتوانند به شما کمک کنند:
۱. متغیر (Variable)
در عبارتی مثل x + 2y که در آن x = 1 و y = 3 است، x و y دو متغیر هستند. همانطور که در این مثال میبینید، هر عددی را میتوان به آنها اختصاص داد (در اینجا ۱ و ۳). متغیرها در برنامه نویسی به طور خلاصه مکانهای حافظه هستند. بنابراین هنگام برنامه نویسی VBA در اکسل نیز از شما خواسته میشود که متغیرهای برنامه خود را اعلام کنید.
قوانین ایجاد متغیرها
هنگام ایجاد یک متغیر باید نکات زیر را در نظر بگیرید:
- از کلمات رزروشده استفاده نکنید: کلمات Reserved کلماتی هستند که در Excel VBA معنای خاصی دارند و به همین دلیل نمیتوانید از آنها به عنوان نام متغیر استفاده کنید.
- از فاصله استفاد نکنید: هنگام انتخاب نام متغیر، نمیتوانید از فاصله بین کلمات آن استفاده کنید. برای مثال نمیتوانید متغیری با نام “first number” تعریف کنید؛ به جای آن میتوانید از “firstNumber” یا “first_number” استفاده کنید.
- از نامهای توصیفی استفاده کنید: برای نام دهی به متغیرها بهتر است از نامهای توصیفی مانند quantity (مقدار)، price (قیمت)، subtotal (مجموع فرعی) و… استفاده کنید. این کار باعث میشود کد VBA اکسل شما به راحتی قابل خواندن و فهمیدن باشد.
۲. عملگرهای حسابی
قواعد BODMAS (به ترتیب براکت، تقسیم، ضرب، جمع، تفریق) یعنی اولویت عملگرهای حسابی در محاسبات، در برنامه نویسی نیز اعمال میشوند. بنابراین به یاد داشته باشید که هنگام کار با عباراتی که از چندین عملگر حسابی مختلف استفاده میکنند، این قوانین را رعایت کنید. این عملگرها در اکسل به صورت زیر هستند:
- + برای جمع کردن
- برای تفریق
- برای ضرب
- / برای تقسیم
۳. عملگرهای منطقی
عملگرهای منطقی در برنامه نویسی اکسل عبارتند از:
- عبارات شامل If
- OR
- NOT
- AND
- TRUE
- FALSE
۴. ماژول
به طور کلی، یک ماژول (module) معادل یک کانتینر (VBA container) برای برنامه نویسی درون اکسل است. به عبارت دیگر، ماژول در واقع جایی است که اکسل کد VBA را درون خود ذخیره میکند. شما در بخش در Project Explorer (که یکی از بخشهای ویرایشگر ویژوال بیسیک است) میتوانید بررسی کنید که کدام ماژولها در workbook اکسلی که روی آن کار میکنید، ذخیره شدهاند. تصویر زیر نمونهای از Project Explorer را نشان میدهد که در آن تنها ۱ ماژول استاندارد (با عنوان “Module1”) وجود دارد.
مراحل برنامه نویسی در اکسل با VBA
اولین قدم برای شروع برنامه نویسی در excel، فعال کردن تب Developer در نوار ابزار اکسل است. برای این منظور مراحل زیر را طی کنید:
- از منوی تب File به قسمت Options و سپس به Customize Ribbon بروید.
- در قسمت Customize the Ribbon و زیر Main Tabs، تیک Developer را انتخاب کنید.
- بعد از این کار، تب Developer همیشه در اکسل شما نمایش داده خواهد شد؛ مگر اینکه مجددا آن را غیرفعال کنید یا مجبور به نصب مجدد اکسل شوید.
در قدم بعد، دو راه برای تولید کد VBA در اکسل پیش رو دارید:
۱. استفاده از Macro
اگر بخواهید از قابلیت ضبط ماکرو در اکسل برنامه نویسی کنید، لازم است مراحل زیر را طی کنید:
- یک ماکرو در اکسل ضبط کنید (با کلیک روی گزینه Reacord Macro).
- پس از توقف ضبط، کد VBA تولید شده توسط ماکروی ضبط شده را مشاهده و بررسی کنید.
- کد VBA ماکروی ضبط شده را تست کنید.
- ماکروی ضبط شده (یا کد VBA ای که از آن تولید شده است) را ذخیره کنید.
همانطور که در بخشهای قبل ذکر کردیم، استفاده از این نوع برنامه نویسی در اکسل مناسب زمانی است که بخواهید اکسل برای شما یک سری کارهای تکراری را به صورت خودکار انجام دهد. اما در صورتی که بخواهید دستورالعملهای دلخواه خود را کدنویسی کنید تا اکسل درخواستهای شما را اجرا کند، باید از روش بعد استفاده کنید.
۲. استفاده از Visual Basic Editor
اگر میخواهید کد VBA مورد نظر خود را از پایه بنویسید تا به معنای واقعی در اکسل برنامه نویسی کنید، باید به ویرایشگر کد اکسل یعنی VBA Editor مراجعه کنید. برای این منظور به تب Developer رفته و روی دکمه Visual Basic کلیک کنید. در اینجا یک پنجره جدید برایتان ظاهر میشود که همان ویرایشگر ویژوال بیسیک (Visual Basic Editor) است. برای یادگیری جزئیات مقدماتی برنامه نویسی اکسل میتوانید از آموزش زیر در فرادرس استفاده کنید:
آموزش نوشتن برنامه ساده Hello World در اکسل
اولین نکته درباره برنامه نویسی در اکسل این است که همه برنامهها در VBA باید با “Sub” شروع و با “End sub” پایان یابند. در قطعه کد زیر، name نامی است که میخواهید به برنامه خود اختصاص دهید. اما sub مخفف یک زیر روال (subroutine) است که در قسمت بعدی آموزش خواهیم آموخت.
Sub name()
.
.
.
End Sub
ما میخواهیم یک کد اولیه VBA بنویسیم که یک input box را برای درخواست نام کاربر به او نمایش میدهد و سپس یک پیام تبریک برایش مینویسد. برای این منظور مراحل زیر را طی کنید:
- یک workbook جدید در اکسل بسازید.
- آن را با فرمت worksheet دارای ماکرو یعنی *.xlsm ذخیره کنید.
- روی تب DEVELOPER کلیک کنید.
- روی INSERT کلیک کنید و از منوی نمایش داده شده در زیر آن، یک دکمه فرمان (command button) را انتخاب کنید.
- دکمه فرمان را در هر نقطه دلخواه از worksheet اکسل خود بکشید و سپس پنجره زیر به شما نمایش داده میشود:
- در این قسمت نام ماکرو را به btnHelloWorld_Click تغییر دهید.
- روی گزینه new کلیک کنید تا پنجره کد VBA زیر را دریافت کنید:
- حالا کدهای زیر را بین sub و end sub وارد کنید:
Dim name As String
name = InputBox(“Enter your name”)
MsgBox “Hello ” + name
در این قطعه کد، اتفاقات زیر میافتد:
- عبارت «Dim name as String» یک متغیر به نام Name ایجاد میکند. این متغیر مقادیر متنی، عددی و کاراکترهای دیگر را میپذیرد، چراکه ما آن را به عنوان یک رشته (String) تعریف کردهایم.
- عبارت «name = InputBox(“Enter your name”)» تابع داخلی InputBox را فراخوانی میکند تا پنجرهای با عنوان Enter your name را نمایش دهد. سپس نام وارد شده توسط کاربر، در متغیر name ذخیره میشود.
- عبارت «MsgBox “Hello ” + name» تابع داخلی MsgBox را فراخوانی میکند تا Hello و نام وارد شده را نمایش دهد.
- پنجره کد کامل شما اکنون باید به شکل زیر باشد:
- حال پنجره کد را ببندید.
- روی دکمه ۱ راست کلیک کرده و edit text را انتخاب کنید.
- عبارت Say hello را وارد کنید.
- روی گزینه Say Hello کلیک کنید.
- حالا input box زیر را دریافت خواهید کرد:
- در اینجا نام خود را وارد کنید (برای مثال: Jordan).
- سپس پیام زیر را دریافت خواهید کرد:
حالا میتوان گفت که شما اولین برنامه VBA خود را در اکسل نوشتید!
کلام آخر
برنامه نویسی در اکسل با کمک زبان VBA انجام میشود. این زبان یک جزء فرعی از زبان برنامه نویسی ویژوال بیسیک است که با استفاده از آن میتوانید در مجموعه نرم افزارهای مایکروسافت آفیس از جمله اکسل، برنامه نویسی کنید. همچنین میتوانید امکانات قدرتمند اکسل را به کار بگیرید و از آنها در VBA استفاده کنید. فقط کافی است که نمونه کدهای مرتبط با اهداف خود را در منابع مختلف جستجو کنید و با تمرین و تکرار برنامه نویسی در excel، به یک کاربر متخصص اکسل تبدیل شوید. همچنین برای یادگیری جامع برنامه نویسی اکسل میتوانید از آموزش تکمیلی فرادرس در لینک زیر استفاده کنید: