مقالات تخصصی دفتر فنی ساختمان

آموزش VBA در اکسل – آموزش برنامه نویسی در اکسل از مبتدی تا پیشرفته

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

در ادامه با ما بیایید. قرار است با هم نمونه کد برنامه نویسی در اکسل را یاد بگیریم؛ رایگان برنامه نویسی در اکسل را پیش ببریم؛ بدانیم که با برنامه نویسی در اکسل چه کارهایی میتوانیم انجام دهیم، با توابع، آرایه ها و نحوه کدنویسی در اکسل به صورت رایگان آشنا شویم.

 

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

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

برنامه نویسی در اکسل چیست و چرا باید یاد بگیرم؟

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

 

 

VBA در اکسل چیست و چگونه برنامه نویس اکسل خواهم شد؟

تا اینجا متوجه شدید که اگه برنامه نویسی در اکسل رو بلد باشید، چه کارهایی میتوانید انجام دهید. حالا در ادامه میخواهیم بحث را بازتر کنیم و بگوییم که VBA  دقیقا چیست؟

vba (مخفف عبارت Visual Basic for Applications) یک زبان برنامه نویسی شئ گراست که این اجازه را به کاربران میدهد تا با آن در  مجموعه آفیس و برخی از نرم افزار ها مثل اتوکد به قابلیت های دلخواهی به برنامه اضافه کنند یا اصطلاحاً توسعه (Development) دهند.  اصطلاح VBA مخفف عبارت Visual Basic for Applications است که مختص برنامه نویسی ویژوال بیسیک در چهارچوب نرم افزارهای آفیس مانند Excel، Word، Outlook و Access میباشد.البته اگر از اکسل هنوز اطلاعی ندارید، میتوانید به سراغ پست آموزش اکسل بروید. محتوای آموزش برنامه نویسی در اکسل برای کسانی است که کم و بیش با اکسل آشنایی دارند.

 

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

برای دسترسی به پنجره VBA ، کلیدهای Alt + F11 را در برنامه آفیس( برای مثال همان اکسل) را فشار دهید. سپس یک پنجره باز می شود. این همان پنجره ای است که باید شروع به کد نویسی کنید.  در ابتدا ممکنه مبهم به نظر برسد اما در واقعیت آنچنان سخت نیست و نیاز به دقت دارد. البته اگر میخواهید زمان را بخرید و خیلی زود ایت مهارت را یاد بگیرید، میتوانید دوره vba در اکسل همینجا، بگذرانید. پکیجی برای شما تولید کرده ایم که در مدت زمانی کوتاه، به صورت فشرده میتوانید مهارت کدنویسی در اکسل را یاد بگیرید.

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

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

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

 

ماکرو نویسی چیست؟

ماکرو به معنی پیاده سازی سیستم هایی است که بتوان بوسیله آنها کارهایی را که در برنامه بطور دستی میتوان انجام داد ، بطور اتوماتیک انجام شوند. برای مثال فرض کنید میخواهید سلولهای A1 تا A10 واقع در Sheet1 را درون ۲ Sheet کپی کنید. راه اول استفاده از گزینه های Copy-Paste است ولی در صورتیکه میخواهید این عمل بطور خودکار انجام گیرد ، یعنی بدون کلیک هیچ گزینه یا دکمه های سلول های مورد نظر شما کپی شوند ، می توانید از ماکرو استفاده کنید.

 

انواع روش‌های ایجاد ماکرو

  • استفاده از ابزار Record Macron

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

 

دستور زبان ( Syntax) چیست؟

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

آشنایی با محیط VBA

برای مشاهده محیط VBA در ریبون Developer بخش Code ، بر روی دکمه Visual Basic کلیک کرده و یا کلیدهای ALT+F11 را بر روی صفحه کلید فشار دهید برای ایجاد ماکرو از طریق این پنجره دو روش وجود دارد که در زیر به شرح آنها می پردازیم.

  • کد نویسی در فرم

VBA به شما امکان میدهد برنامه هایی دارای واسط کاربر (Interface) همانند Basic Visual را ایجاد کنید. به قسمت ویژوال برنامه که بین کاربر و کدها رابطه برقرار می کند واسط کاربر گفته می شود. در صورتیکه میخواهید برنامه شما دارای واسط کاربر باشد باید ابتدا یک فرم ایجاد کرده و سپس خود را بر روی کامپوننت های فرم وارد کنید.

روش کار:

در Toolbar بر روی دکمه Insert کلیک کرده و گزینه Userform را انتخاب کنید.

از طریق پنجره ToolBox کامپوننت های مورد نظر را بر روی فرم قرار دهید.

سپس بر روی دکمه Code View کلیک کرده و کدهای الزم را برای هر کدام از کامپوننت ها وارد کنید.

برای مشاهده نتیجه برنامه بر روی دکمه Run کلیک کنید برای بازگشت به حالت ویرایش بر روی دکمه Break و یا Reset کلیک کنید.

آموزش برنامه نویسی در اکسل

تفاوت دکمه Break و Reset

دکمه Reset اجرای برنامه را بطور کامل متوقف کرده و داده هایی که در برنامه خود وارد کرده اید را حذف می کند. برای مثال اگر درون TextBox کلمه ای را وارد کرده اید آنرا پاک میکند. در صورتیکه می خواهید برنامه شما بطور کامل متوقف نشود و فقط آنرا برای چند لحظه متوقف کرده و ویرایش هایی را در آن ایجاد سپس نتیجه را مشاهده کنید از دکمه Break استفاده کنید توجه داشته باشید که در دو حالت برای اجرای مجدد برنامه باید دکمه Run را کلیک کنید.

  • کد نویسی در Module

Module پنجره ای برای تایپ کد  است.

کدهایی که در Module وارد می شوند را می توانید مستقیماً از طریق کامپوننت هایی که بر روی Sheetهای Excel قرار میدهید اجرا کنید با نحوه استفاده از Module  آشنا خواهید شد. 

سیستم امنیتی Excel در مقابل Macro

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

ابر روی دکمه Options کادر اخطار کلیک کرده

پنجره باز شده گزینه Enable را فعال کرده و بر روی OK کلیک کنید.

در صورت تمایل میتوانید تنظیمات امنیتی Excel را تغییر دهید تا از اجرای ماکرو جلوگیری نکند، این تنظیمات از طریق دکمه Macro Security واقع در بخش Code ریبون Developer قابل دسترس است.

آموزش برنامه نویسی در اکسل

گزینه های آن به شرح زیر است:

  • Disable all macros without notification  : تمامی ماکروها را غیر فعال می کند
  • Disable all macros with notification : حالت پیش فرض است اجرای همه ماکروها را متوقف کرده ولی از طریق کادر اخطار می توان آنها را اجرا کرد
  • Disable all macros except digitally signed macros : تنها ماکروهایی اجرا خواهند شد که فایل Excel آنها دارای امضای دیجیتالی باشد.
  • Enable all macros تمامی ماکروها اجرا میشوند و هیچ پیغام امنیتی نمایش داده نمی شود.

آموزش برنامه نویسی در اکسل

روش ذخیره فایل های حاوی ماکرو

همان طور که از بخش اول به یاد دارید میتوانید فایل خود را به انواع فرمتها ذخیره کنید. توجه داشته باشید که در صورتیکه فایل شما حاوی ماکرو است اگر از فرمتی بجز (Excel Macro Enabled ( XLSM Workbook استفاده کنید ماکرو ذخیره نمی شود.

آموزش برنامه نویسی در اکسل

مبانی اولیه در آموزش  برنامه نویسی در اکسل:

قبل از آغاز کدنویسی در اکسل یا همان برنامه نویسی در اکسل، لازم است که با اصول اولیه آن آشنا شوید.

  • قوانین نامگذاری متغیرها:

از عنوان رزرو شده نمی‌توان با عنوان متغیر یاد کرد و این امر در برنامه VBA نیز صدق می‌کند. در زبان VBA یک سری کلمات با معنای ویژه به عنوان کلمات رزرو شده در نظر گفته شده است و نمی‌توان از آن‌ها به عنوان متغیر استفاده کرد.

در نام متغیرها نمی‌توانید از فاصله استفاده کنید و یا دو کلمه را جدا از هم بنویسید. برای مثال، کلمه first number اشتباه است و برای نامگذاری درست باید یکی از دو حالت first_number یا firstNumber انتخاب کنیم.

بهتر است از اسامی توصیفی مانند رنگ، جنس، قیمت و … برای نامگذاری استفاده کنید تا خوانایی کد VBA را افزایش دهید.

متغیرها، ثابت ها و آرایه ها در کدنویسی اکسل 

متغیر (Variable) در کدنویسی چیست؟

در صورتیکه این اولین تجربه شما برای ورود به دنیای برنامه نویسی است، برای ارائه تعریفی از یک متغیر می توان گفت یک متغیر بخش کوچکی از حافظه کامپیوتر است که ما به آن یک اسم مانند x یا y اختصاص می دهیم. میتوان اینطور تصور کرد که یک متغیر مانند جعبه ای است که میتوان اعداد حروف و سایر اطلاعات را درون آن قرار داده و سپس از این اطلاعات استفاده نمود.

همانطور که در شکل بالا دیده میشود در ابتدا مقدار ۳ به متغیر x  داده شده است پس از آن مقدار ۱ با شده و حاصل برابر ۴ شده است. درضمن بر اساس شکل زیر اگر مقدار ۵ را به متغیر x دهیم این مقدار جدید با ۴ (مقدار درون متغیر) جمع شده و عدد ۹ جایگزین مقدار قبلی متغیر (یعنی ۴ ) خواهد شد. به عبارت دیگر یک متغیر در یک زمان تنها می تواند یک مقدار داشته باشد.

در تعریفی شفاف تر باید بگوییم که همه ما در دوران مدرسه با عبارت‌هایی مانند x = 7 و  y =9 آشنا شده‌ایم که x و y متغیرها هستند.  در  زبان برنامه نویسی وی بی ای (VBA) هم مثل سایر زبان های برنامه نویسی از متغیرها   جهت ذخیره مقادیر استفاده میشود. البته  پارامتر دیگری به اسم ثابت داریم که همانطور که از اسمش مشخص است در کدنویسی، نشانده دهنده عددی ثابت هستند. برای مثال  شما میتوانید از یک ثابت با نام PI برای ذخیره کردن عدد ۳.۱۴۱۵۹۲۶۵ در کدنویسی اکسل استفاده کنید. اما برای متغیر هر عددی که نیاز است را میتوانید وارد و تعریف کنید.

انواع متغیرها  در برنامه نویسی

در Visual Basic انواع گوناگونی از متغیرها برای ذخیره اطلاعات مختلف وجود دارند. برای مثال یک نوع متغیر برای ذخیره اعداد و نوعی دیگر برای ذخیره کردن حروف استفاده شود. در زیر به شرح آنها می‌پردازیم:

متغیر Integer در کدنویسی اکسل

یک متغیر از نوع Integer برای ذخیره یک عدد صحیح که بخش اعشاری ندارد مانند ۵ ، ۴ ، ۳ ، ۲ ، ۱- به کار میرود در صورتیکه بخواهیم عدد ۱.۲ را در یک متغیر از نوع Integer قرار دهیم با خطا مواجه خواهیم شد.

متغیر Long در کدنویسی اکسل

این نوع متغیر در واقع همان نوع Integer اما با دامنه ی بیشتر است و میتواند اعداد بزرگی را که نـوع Integer قادر به پذیرفتن آنها نیست را در خود ذخیره کند.

متغیر Single در برنامه نویسی اکسل

این متغیر اعداد اعشاری را ذخیره میکند این متغیر قادر است حدود ۴۰ رقم را در خود ذخیره کند.

متغیر Double در کدنویسی اکسل

این متغیر همانند Single اعداد اعشاری را در خود ذخیره می کند، اما Double دامنه گسترده تری دارد و قادر به ذخیره ۳۰۰ رقم است.

متغیر Currency در برنامه نویسی اکسل

یک متغیر با دقت بالا برای کار کردن با مقادیر پولی است.

String در کدزنی در اکسل

یک متغیر از نوع String برای ذخیره کردن یک رشته از ،حروف اعداد و نشانه ها به کار می رود.

به تفاوت Integer و String در کار با اعداد توجه کنید

فرض کنید x و y دو متغیر از نوع Integer باشند. اگر فرض شود که ۲ = x و ۳ = y باشد، حاصل x + y 5 = خواهد بود. اما در صورتی که این دو متغیر از نوع String باشند حاصل ۲۳ = x + y خواهد بود؛ یعنی مقادیر آنها در کنار هم قرار داده میشود. همچنین یک رشته حتماً باید بین دو علامت قرار گیرد.

برای مثال ” this is a String “ یا ”Hello “ یا ” ۱۴ “ یا ” ۱۲۳ : this is a number “ همگی رشته هستند.

متغیر Boolean در برنامه نویسی

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

Date در برنامه نویسی

این نوع متغیر برای نگهداری و انجام محاسبات بر روی تاریخ و ساعت استفاده میشود. داده هایی را که میخواهید در این متغیر ذخیره کنید را باید بین علامت # قرار دهید برای مثال ۵/۲۲/۲۰۰۸# یا#۲:۲۰:۱۵ AM#

Variant در برنامه نویسی

این متغیر میتواند بجای هر یک از متغیرهای معرفی شده به کار گرفته شود به عبارتی اگر یک عدد صحیح به آن داده شود این متغیر مانند یک Integer عمل کرده و در صورتیکه یک رشته از کاراکترها را به آن نسبت دهید مانند نوع String عمل خواهد کرد.

جدول زیر حداکثر و حداقل مقادیری که متغیرهای معرفی شده میتوانند ذخیره کنند را نشان میدهد.

آموزش برنامه نویسی در اکسل

روش تعریف متغیر در کدنویسی در اکسل

برای تعریف کردن یک متغیر در Visual Basic از کد زیر استفاده می شود:

نمونه کدنویسی در اکسل : Dim Var Name As Var_Type

کلمه Dim یک کلمه کلیدی است که حتماً باید به همین صورت نوشته شود سپس نامی که میخواهیم بـه آورده متغیر دهیم آورده می شود. کلمه Dim مخفف کلمه Dimension داشته و به معنای اندازه و ابعاد دارد .

سپس  کلمه As که آن هم یک کلمه کلیدی است و در آخر نوع متغیر  (String – Integer و …) وارد می شود.

مثال دوم کدنویسی در اکسل (تعریف متغیر):

۱
Dim x As Integer ‘اعلان متغیر

در مثال بالا متغیر x از نوع داده integer است، که به کامپایلر VBA اعلان شده .لازمه است یادآوری کنیم که داده integer از نوع عددی می باشد و فضایی معادل ۲ بایت را اشغال میکند. بنابراین با اعلان متغیر x در فضای vba اکسل،  فضایی برابر با ۲ بایت به نام x اختصاص داده می‌شود.

نکات و قواعد نامگذاری متغیر در VBA

قطعا یک سری قوانین برای نامگذاری متغیر در vba است. چند قانون زیر را به خاطر بسپارید و در زمان کدنویسی در اکسل رعایت کنید.

  • نام متغیر باید با یکی از حروف انگلیسی شروع شود.
  • نام متغیری که میخواهید تعریف کنید، می‌تواند بین ۱ تا ۲۵۵ کاراکتر داشته باشد.
  • در نام متغیر نباید از فاصله (space)، استفاده کنید. برای مثال: ، کلمه first number اشتباه بوده و شیوه درستش به یکی از دو حالت first_number یا firstNumber است.
  • نباید از علائم نگارشی مثل نقطه (.)، علامت تعجب (!)  و یا کاراکترهای @، &، $ و # در نام گذاری متغیر استفاده کنید.
  • استفده  از نام‌هایی که همنام با تابع، دستور، اسم ثابت و… است، ممنوع میباشد. در واقع از واژه‌نامه‌های vba نمیتوانید برای متغیر استفاده کنید.
  • در یک سطح از کدنویسی نباید از نام های تکراری استفاده کنید.
  • از نام های معنادار (مانند curweightTotal) بجای اسامی مبهم (مثل curW1) استفاده کنید  تا کد برای هر برنامه نویسی مفهوم شفاف داشته باشد.
  • زبان VBA به حروف بزرگ و کوچک حساس نیست. یعنی برای مثال تفاوتی بین Age، age و aGe وجود ندارد.

کلمات کلیدی ( key word ) چیست؟

به کلماتی که زبان برنامه نویسی برای تعریف دستورها از آنها استفاده میکند کلمات کلیدی گویند.

مقداردهی به یک متغیر

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

به مثال های زیر توجه کنید.

Dim test1 As Integer

Test1 = 2

این کد متغیری به نام test1 و از نوع Integer تعریف کرده و سپس مقدار ۲ را در آن قرار می دهد.

Dim test2 As String

test2= “Hello World”

یک متغیر از نوع String و با نام test2 ایجاد کرده و سپس جمله Hello World را در آن قرار می دهد.


نام گذاری متغیرها

همانطور که گفته شد، در نامگذاری یک متغیر در Visual Basic قوانینی وجود دارد که بایستی رعایت شوند نام باید حروف ، اعداد یا ترکیبی از آنها باشد و نمیتوان از کاراکترهای ویژه مثل Dash (-) ، Period Space ، (/)  استفاده کرد.

Dim My Var As Integer

Dim My.Var As Integer

Dim My Var As Integer Dim MyVar As Integer

از کاراکتر (_ ) Underline می توان استفاده کرد.

نام یک متغیر باید حتماً با یک حرف شروع شود. مثال:

صحبح: Dim Variable_Number_2 As Integer

غلط: Dim 2nd_Variable As Integer

نام متغیرها نباید بیش از ۲۵۵ کاراکتر باشد و همچنین نمی توان از کلمات کلیدی مانند Dim به عنوان نام یک متغیر استفاده نمود.


متغیر رشته ای با طول ثابت

نوعی از متغیر string وجود دارد که میتوانید تعیین کنید حداکثر چند کاراکتر را بتواند در خود جای دهد به عنوان مثال شما میخواهید سن یک فرد را به صورت یک رشته در یک متغیر از نوع String با طول ثابت ذخیره کنید؛ پس این متغیر حداکثر ۳ کاراکتر را باید ذخیره کند.

Dim My_Var as string * 3

ثابت ها (constants)

ثابت ها در واقع متغیرهایی هستند که مقدار آنها تغییر نمی.کند به عنوان مثال شما کدی نوشته اید که مساحت یک دایره را محاسبه می کند عدد پی همواره مقدار ثابت ۳,۱۴ را دارد و تغییر نمی کند پس آن را بصورت ثابت تعریف می کنیم. ثابت ها در Visual Basic با دستور Const تعریف میشوند.

Dim R,Area as Single Const P=3.14

R=2

Area=P*R*R

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

Dim R, Area as Single

Const P=3.14

R=2

P=3

Area= P*R*R

خط سوم در این کد ایجاد یک خطا مینماید.


تعریف ضمنی و صریح متغیر 

در تمامی اوقات مجبور نیستید قبل از استفاده از یک متغیر آن را با دستور Dim تعریف کنید. در هر مرحله از نوشتن کد برنامه که باشید در صورت نوشتن کدی مانند ۴۸=My_var بطور خودکار متغیری با نام My_var از نوع Variant ایجاد شده و مقدار ۴۸ به آن داده میشود.

به عنوان مثال:

Dim num1 as integer

num2=num1/2

همانطور که ملاحظه میشود در ابتدا فقط متغیر num1 توسط دستور Dim تعریف شده است. به این نوع تعریف متغیر، تعریف صریح یا Explicit Declaration گفته میشود در خط دوم متغیر num2 بدون استفاده از دستور Dim تعریف شده است در نتیجه این متغیر بصورت ضمنی (Implicit Declaration) تعریف گردیده و از نوع Variant است.

تعریف کردن ضمنی متغیرها گاهی اوقات مشکل آفرین نیز است به عنوان مثال کد قبل را کمی تغییر می دهیم.

Dim num1 as integer

num1=10

num2=20

num3=num2numl

فرض کنید در خط چهارم اشتباها به جای num1 نام دیگری مانند num11 را تایپ کنید در اینصورت کامپیوتر متوجه این اشتباه نخواهد شد بلکه متغیر جدیدی به نام num11 با مقدار Empty ایجاد میکند که خطا در طی عملیات تقسیم خواهد شد. در صورتیکه کد نوشته شده طولانی باشد، پیدا کردن و رفع چنین اشتباهی باعث اتلاف وقت خواهد شد.

حتی اگر شما muml num2 را با استفاده از Dim نیز تعریف میکردید تا زمانی که خاصیت [Implicit declaration ) تعریف (ضمنی فعال است امکان مواجه شدن با مشکلی که در بالا ذکر شد وجود دارد برای رفع این مشکل Visual Basic این امکان را در اختیار شما قرار می دهد که خاصیت Implicit declaration را غیر فعال کنید.

روش غیر فعال کردن تعریف ضمنی متغیر (Implicit decelaration)

اگر بخواهید از تعریف ضمنی متغیر جلوگیری کنید کد Option Explicit را در بالای کدها تایپ کنید.

مثال :

Option explicit

Dim MyVar as string

در این مثال از آنجاییکه متغیر MyInt در خط چهارم با تعریف ضمنی تعریف شده ایجاد خطا می‌کند

My Var=2 MyInt = 2


تعریف عملگر‌های منطقی در برنامه نویسی اکسل :

در برنامه نویسی یک سری عملکرد های منطقی وجود دارد که نتیجه آن درست (True) یا غلط (False) است. . از این عملگر می‌توان برای شرط‌های زیر استفاده کرد:

  • If statements
  • OR
  • NOT
  • AND
  • TRUE
  • FALSE

نمونه کدهای vba در اکسل

Dim userName As String
userName = InputBox("What is your name?")

If userName = "Mark" Then
    MsgBox "Hi " & userName & ", Welcome back"
End If

مثالی دیگر از دستور شرطی در کدنویسی vba در اکسل:

میخوایم رنگ سلول فعال رو بر اساس عددی که کاربرد وارد اکسل میکند، به طور اتوماتیک بر اساس کد تغییر رنگ دهد. برای  مثال اگر مقدار وارد شده در سلول فعال از ۵ کوچکتر باشه، رنگ سلول قرمز شود . اگر متغیر وارد شده بین ۵ تا ۱۰ باشه رنگ سلول نارنجی و در غیر این صورت اگر متغیر بیشتر از ۱۰ بود، رنگ سلول به رنگ سبز در آید.

If ActiveCell.Value < 5 Then
ActiveCell.Interior.Color = 255 ‘ رنگ سلول قرمز
ElseIf ActiveCell.Value < 10 Then
ActiveCell.Interior.Color = 49407 ‘ رنگ سلول نارنجی
Else
ActiveCell.Interior.Color = ۶۵۲۸۰ ‘ رنگ سلول سبز
End If

 

آرایه ها در برنامه نویسی تکسل

آرایه ها برای ایجاد چندین متغیر از یک نوع استفاده میشوند. در نتیجه زمانی که میخواهید تعداد زیادی متغیر را از یک نوع تعریف کنید آرایه ها باعث سهولت کار میشوند به عنوان مثال برای ذخیره روزهای هفته به جای این که هفت متغیر جداگانه از نوع String تعریف کنیم میتوانیم از یک آرایه استفاده کنیم.

روش تعریف آرایه

Dim Array_Name(Array_Count) AS Array_Type

Array_Name : نام متغیر

Count_Array : تعداد متغیری که می خواهید ایجاد شود.

Array_Type : جنس متغیرهای آرایه

استفاده از متغیرهای تعریف شده بوسیله آرایه

برای فراخوانی متغیرها در یک آرایه ، نام آن بعلاوه یکی از شمارههای تعریف شده در قسمت Count_Array را وارد می کنیم

مثال :

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

نکات:

Dim Week_Days(6) As string

Week_Days(0) = “ Sunday

Week_Days(1) = “ Monday ”

Week_Days(2) = ” Tuesday ”

Week_Days(6) = “ Saturday ”

نکات

حد پایین آرایه صفر است پس در صورتیکه می خواهید هفت متغیر ایجاد شود در Count_Array عدد ۶ را وارد کنید.

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

Dim Week_Days0, Week_Days1, … as string 

آرایه های دینامیکی

گاهی اوقات نمیدانیم که به آرایه ای به چه اندازه احتیاج داریم برای مثال فرض کنید آرایه ای بـا انـدازه ۱۰۰۰ بسازیم و پس از آن متوجه شویم که تنها به ۵۰۰ عضو آن احتیاج داشته ایم و یا ممکن است حالت برعکس نیز رخ دهد.

 

در اینحالت آرایه های دینامیکی که خود به خود تغییر اندازه داده به کمک ما می آیند.

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

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

Dim My_Array() As Array_Type

ReDim My_Array(20)

همچنین توجه کنید که اگر نوع خاصی به آرایه ندهید Basic آن را از نوع Variant تعریف می کند.

تغییر در اندیس آرایه

گاهی اوقات نیاز است اندیس یک آرایه به جای مقدار صفر با یک آغاز شود برای این منظور در بالای کد عبارت ۱ Option Base را وارد کنید

مثال :

در صورت تایپ عبارت ۱ Option Base و سپس تعریف آرایه Dim My_Array(2) As Integer آرایه ای با دو متغیر ایجاد می شود.

آرایه های چند بعدی

آرایه دو بعدی

اگر ما جدولی را با N سطر و N ستون در نظر بگیریم به ترکیبات مختلف سطر و ستونهای این جدول آرایه دو بعدی گویند.

مثال:

آرایه مقابل را در نظر بگیرید.

Dim my_Array(18) As String

بازنویسی آن بصورت دو بعدی به شکل زیر است:

Dim my_array(2,5) As String

از آنجاییکه آرایه از صفر شروع میشود با این دستور متغیرهایی به تعداد ترکیب سه سطر و شش ستون ایجاد می‌شود در نتیجه ۱۸ متغیر ایجاد می شود.

نام آرایه های دو بعدی

همانطور که گفته شد اگر آرایه دو بعدی را یک جدول در نظر بگیریم ، نامگذاری براساس ترکیب نام سطر و ستون های جدول انجام می‌گیرد.

شکل زیر نمایانگر آرایه Dim my_array(25) as string است.

آموزش برنامه نویسی در اکسل

پس نام متغیرها به شرح زیر است:

my_array(0, 0) = “a”

my_array(0, 1) = “b”

my_array(0, 2) = “c”

my_array(0, 3) = “d”

my_array(0, 4) = “e”

my_array(0, 5) = “f”

my_array(1, 0) = “g”

my_array(1, 1) = “h”

my_array(1, 2) = “i”

my_array(1, 3) = “j”

my_array(1, 4) = “k”

my_array(, 5) = “”

my_array(2, 0) = “m”

my_array(2, 1) = “n”

my_array(2, 2) = “o”

my_array(2, 3) = “p”

my_array(2, 4 = “q”

my_array(0, 5) = “r”

آرایه سه بعدی

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

شکل سه بعدی آرایه ای با ۱۸ متغیر به صورت زیر است:

Dim my_array(2,2,2)

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

نام آرایه های سه بعدی

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

Dim my_array(2, 2, 2) As String

my_array(0, 0, 1 = “a”

my_array(0, 1, 1) = “b”

my_array(0, 2, 1 = “c”

my_array(1, 0, 1

= “d”

my_array(1, 1, 1 = “e”

my_array(1, 2, 2) = “o”

my_array(2, 0, 2) = “p”

my_array(2, 1, 2) = “q”

my_array(2, 2, 2) = “r”

عملگرها در Visual Basic

عملگر انتساب

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

Dim My Var As Integer

My_Var = 3

My_Var = 5

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

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

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

Dim My_Var1, My_Var2 As Integer

My_Var1 = 3

My_Var2 = My_Var1

My_Var1 = 5

در خط اول دو متغیر با نامهای My_Varl و My_Var2 تعریف شده است در خط دوم مقدار ۳ درون My_Varl قرار گرفته و در بعد مقداری که درون My_Var1 است (یعنی) (۳) درون My_Var2 قرار می گیرد. در خط آخر My_Varl مقدار ۵ را می گیرد.

عملگرهای ریاضی

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

عملگر جمع (Summation)

در صورتیکه میخواهید مقداری را با متغیری جمع کرده و یا دو عدد را با هم جمع و در متغیری قرار دهید از عملگر جمع (+) استفاده کنید.

مثال ۱:

Dim num As Integer

num = 3 + 5

مثال ۲

Dim num1, num2 As Integer

num1 = 3

مثال ۳

num2 = num1 + 2

Dim num As Integer

num=4

num = num + 1

مثال ۳ ممکن است کمی گیج کننده به نظر برسد. اولاً همواره به یاد داشته باشید که عملگر انتساب و عملگر تساوی با هم متفاوت هستند در خط اول متغیر num تعریف شده است در خط دوم مقدار ۴ به آن داده شده است. در خط سوم ابتدا مقدار ۴ از متغیر num بازیابی می شود سپس عدد ۱ به آن اضافه میشود که نتیجه برابر با ۵ خواهد بود. پس از آن مقدار ۵ درون متغیر num ریخته میشود و جایگزین مقدار اولیه آن (یعنی ۴) می گردد.

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

تفریق (Subtraction)

برای کم کردن مقداری از یک متغیر و یا تفریق دو عدد از عملگر تفریق(-) استفاده می شود.

مثال :

Dim num As Integer

num=3

num = num -2

حاصل برابر یک است

ضرب (Multiply)

برای ضرب مقداری در یک متغیر و یا ضرب دو عدد از عملگر ضرب (*) استفاده می شود.

مثال :

Dim num As Integer

num = 3

num = num * 2

 تقسیم (Division)

برای استفاده از این عملگر از علامت (/) استفاده می شود.

Dim num1, num2, result As Single

num1 = 5

num2 = 2

Result = num1/num2

نتیجه برابر با ۲.۵ خواهد بود توجه داشته باشید که متغیرها را از نوع Single تعریف کرده ایم تا قابلیت پذیرش اعشار را داشته باشند.

در برخی موارد که تقسیم نتیجه ای دارد که پایان ندارد مانند هنگامی که بخواهیم حاصل تقسیم ۱ بر ۳ را حساب کنیم Visual Basic بهترین تقریبی که میتواند ذخیره کند را درون متغیر قرار می دهد.

خارج قسمت (Division)

این عملگر که با استفاده از علامت (۱) مورد استفاده قرار میگیرد، خارج قسمت یک تقسیم را محاسبه می کند.

مثال :

Dim num1, num2, result As Integer

num1 = 5

num2 =

result = 5 3

مقدار result برابر با ۱ خواهد بود.  

عملگر باقی مانده (Modulus)

Dim num1, num2, result As Integer

num1 = 5

num2 = 3

result = 5 3

عملگر Mod) Modulus) مقدار باقی مانده تقسیم را محاسبه می کند.

مثال :

Dim result, num1, num2 As Integer

num1 = 5

num2 = 3

result = num1 Mod num2

مقدار متغیر result برابر با ۲ خواهد بود.

توان (Power)

برای به توان رساندن یک متغیر و یا به توان رساندن متغیری بر دیگری از عملگر توان (۸) استفاده می شود.

اولویت عملگرها

Dim result, num1, num2 As Integer

num1 = 5

num2 = 3

result = num1^num2

اولویت عملگرها

تعیین میکند کدام عملگر اول اجرا شود ترتیب اجرای عملیات با توجه به تقدم عملگرها تعیین می شود. برای مثال اینکه عمل ضرب نسبت به جمع مقدم است اولویت یا precedence نام دارد. جدول زیر تقدم عملگرها را نمایش می دهد.

آموزش برنامه نویسی در اکسل

مثال:

Dim num as integer

num = 3 + 5 * 2

به این عبارت ریاضی فکر کنید؟ حاصل آن چقدر است؟

اگر عمل جمع در ابتدا انجام شود نتیجه ۱۶ خواهد بود ولی اگر عمل ضرب در ابتدا انجام شود نتیجه ۱۳ خواهد بود کدام یک درست است؟ با توجه به جدول تقدم عملگرها میتوان فهمید که عدد ۱۳ صحیح خواهد بود.

در صورتیکه تمایل داشته باشید که عمل جمع اول انجام شود میتوان از عملگری که بالاترین اولویت را دارد

یعنی پرانتز استفاده کنید.

Dim num as integer

num= (3+5) 2

نمونه کدنویسی در اکسل:

درج سری اعداد بصورت افزایشی

()Sub Insert_Numbers_From_Top

Dim i As Integer

For i = 1 To 20
Cells(i, 1).Value = i
Next i

End Sub

درج سطرهای خالی بعد از هر سطر

()Sub Insert_Row_After_Every_Other_Row
Dim rng As Range
Dim CountRow As Integer
Dim i As Integer

Set rng = Selection
CountRow = rng.EntireRow.Count

For i = 1 To CountRow
ActiveCell.EntireRow.Insert
ActiveCell.Offset(2, 0).Select
Next i
End Sub

ذخیره کردن تمام worksheet ها در فایل pdf

 

()Sub SaveWorkshetAsPDF
Dim ws As Worksheet
For Each ws In Worksheets
ws.ExportAsFixedFormat xlTypePDF, “C:UsersSumitDesktopTest” & ws.Name & “.pdf”
Next ws
End Sub

سلول هایی را با کلمات غلط املایی را مشخص میکند

 

() Sub HighlightMisspelledCells
Dim cl As Range
For Each cl In ActiveSheet.UsedRange
If Not Application.CheckSpelling(word:=cl.Text) Then
cl.Interior.Color = vbRed
End If
Next cl
End Sub

 

سوالات رایج در مورد  آموزش صفر تا صد برنامه نویسی در اکسل

آیا برای یادگیری برنامه نویسی در اکسل، دانلود رایگان آموزش کد نویسی در اکسل کفایت میکند؟

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

اگر شما خودتان در دسته افراد آگاه میدانید، پس در دوره ای که برای شما جهت یادگیری برنامه نویسی در اکسل تهیه کرده ایم؛ شرکت کنید.

آموزش کدنویسی در اکسل از مبتدی تا پیشرفته برای را چند روزه میتوانم یاد بگیرم؟

برنامه نویسی در اکسل، آنچنان سخت نیست که بخواهید قیدش را بزنید. اگر تلاش کنید و وقت بگذارید در عرض یک ماه میتوانید برنامه نویسی در اکسل را یاد بگیرید و فول فول شوید. اگر به ذنبال آموزش vba در اکسل رایگان هستید، این پست میتواند به شما کمک کند. نمونه برنامه نویسی در اکسل در این صفحه و در دوره ای که جداگانه برای شما مدنظر داریم، آموزش داده شده است. سودا در عرض ۱۰ الی ۱۲ ساعت به صورت کاملا مفید و هوشمندانه برنامه نویسی در اکسل را به شما یاد میدهد. 🙂 

فراموش نکنید که شما با صرف هزینه ای هوشمندانه میتوانید، زمان را بخرید و در کنار دانلود رایگان آموزش کد نویسی در اکسل، در دوره به صورت آفلاین یا حضوری شرکت کنید.

 

خلاصه ای از اینکه Vba در اکسل چیست؟

همانطور که در این مقاله از آموزش رایگان برنامه نویسی در اکسل خواندید، VBA یا Visual Basic for Applications، یک زبان برنامه‌نویسی است که برای توسعه برنامه‌های میکروسافت آفیس مانند اکسل، ورد و اکسس استفاده می‌شود. با استفاده از VBA، کاربران می‌توانند اسکریپت‌هایی را ایجاد کنند که به آن‌ها در اتمام کارهای روزمره در اکسل کمک می‌کند.

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

 

سخن آخر در مورد برنامه نویسی در اکسل

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

نوشته های مشابه

‫۳ دیدگاه ها

  1. با عرض سلام میخاستم بدونم ادامه دوره آقای شهپر برای ماکرو نویسی چطور شد؟ دوره تکمیلی وجود داره برای ثبت نام یا دانلود یا خرید؟

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

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا