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

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

ماکرو چیست؟

کد هایی که به زبان ویژوال بیسیک نوشته میشوند ماکرو نام دارند، کلاً ماکرو نویسی به معنای کد نویسی میباشد. کدها میتوانند به منظورهای خاص نوشته شده باشند. برخی کدها دستوری، برخی دیگر برای درج کامنت و … مجموعه ی این کدها در کنار یکدیگر برای انجام عملیاتی مشخص قرار میگیرند. به صورت عمومی نوشتن کد به زبان ویژوال بیسیک که در محیط اکسل اجرا میگردد را ماکرو نویسی در اکسل میگویند،

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

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

Procedure

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

برای آشنایی بیشتر با پروسیژرها و انواع آنها مقاله ی پروسیژ ها در ویژوال بیسیک را مطالعه نمایید.

در ماکرو نویسی Procedure ها میتوانند Sub، Function یا Property باشند. در ادامه به معرفی آن ها میپردازیم.

Sub

ساب یا همان Sub Routine یک نوع Procedure میباشد که با عبارت Sub شروع شده و با عبارت End Sub تمام میشود، کد های قرار گرفته در بین این دوعبارت عملیات خاصی را با هم انجام میدهند اما قرار نیست که خروجی مشخصی ارایه کنند، یعنی نمیتوان نوشت خروجی Sub برابر است با یک مقدار یا عبارت مشخص. Sub ها پرکاربردترین Procedure ها در ماکرو نویسی در اکسل میباشند. به این نوع پروسیژر ها به صورت مختصر روتین (Routine) هم میگویند، در مقاله ی Procedure ها در ماکرو نویسی این نوع پروسیژر مورد بررسی قرار گرفته است.

Property

پروپرتی یا همان Property Procedure هم مانند Sub یک نوع Procedure میباشد که با Property Set یا Property Get یا Property Let شروع شده و با End Property تمام میشود. کد های قرار گرفته در بین این دو عبارت برای Class Module ها خواص (Properties) تعریف و توصیف میکنند، به عبارت ساده تر کدها قرار است برخی خواص یک شیء خاص را تعریف و مورد بررسی قرار دهند، با مفهوم شیء آشنا خواهیم شد.

در مقاله ای که به معرفی Procedure پرداخته شده است در مورد Property توضیحاتی ارایه شده، در آینده در این مقوله بیشتر صحبت خواهد شد.

Function

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

نمیتوان Procedure ها را درون یکدیگر تعریف کرد به عبارت دیگر، خط اول و آخر هر Procedure یک Module Level Code (کدی که در سطح یک ماژول تعریف شده و شناخته شده است) میباشد.

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

ماژول

ماژول یا Module ها فضاهایی هستند که کد ها در آنجا نوشته میشوند، همانند شیت ها در اکسل که فرمول ها و داده ها در آن ها قرار میگیرد ماژول ها محلی برای درج کدها میباشند. شما میتوانید به تعداد دلخواه ماژول ایجاد نمایید، هر ماژول میتواند حاوی چندین Procedure با انواع مختلف باشد. انوع ماژول به لحاظ مفهوم با هم توفیری ندارند، و فرق آنها در تعریف شدنشان برای منظورهای متفاوت میباشد.

انواع ماژول ها

انواع ماژول ها عبارتند از:

  • ماژول های نوع Standard Module یا همان Code Module که ماژول هایی هستند که میتوانند توسط سایر ماژول ها در یک پروژه مورد استفاده قرار گیرند.
  • ماژول های نوع Class Module که برای تعریف یک Class خاص و مشخص تعریف و مورد استفاده قرار گرفته اند. این نوع ماژول ها یک کلاس (Class) را توصیف (Define) کرده و خواص (Properties) و روش های (Method Definitions) آن را تعریف میکنند.
  • ماژول های نوع Form Module که حاوی کد های مربوط به یک فرم (Form) هستند. با فرم ها به تفصیل آشنا خواهیم شد. فرم ها خود دارای اشیا متعدد میباشند که کدهای مربوی به Properties هریک از آنها در این فضا قرار میگیرد.
  • ماژول های نوع Object Module که حاوی کد های مشخص برای یک شیء (Object) میباشند، ماژول ها نوع Class Module، Form Module و Document Module همگی جز این دسته میباشند به این علت که خود Form ها یا Document ها یا Class ها در ویژوال بیسیک اشیا محسوب میشوند.

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

 Declaration

کد های غیر اجرایی (یا غیر قابل اجرا Non Executable) میباشند که برای نام گذاری Procedure ها، ثابت ها (Constants)، متغیر ها (Variables) و مشخصات (Characteristics) آنها- مانند نوع داده ها- میباشند. هر ماژول در ابتدا دارای سطرهایی تحت عنوان Declarations میباشد که منظور چند سطر ابتدایی ماژول است که برخی تنظیمات مربوط به سراسر آن ماژول در قالب کد نوشته میشود. در آینده با این بخش اشنا خواهیم شد. یکی از دلایل نیاز به تعریف چند ماژول برای یک پروژه، متفاوت بودن Declaration ها ی آنها با توجه به کاربردشان میباشد.

میتوان ماژول را به صورت یک سری Declarations که به دنبال آن ها Procedure ها قرار دارند هم تعریف نمود. به کد ها و متغیرهایی که به صورت Decorations تعریف میشوند عبارت Module Level Codes و Module Level Variable اطلاق میگردد. متغیر های نوع Module Level در تمام Procedure های قرار گرفته در آن ماژول معتبر میباشند.

فرم

فرم ها یا Form ها اشیا تبادل اطلاعات با کاربر (Dialog Box) یا پنجره هایی میباشند که در برگیرنده ی کنترل ها (Controls) هستند. نوع تخصصی تر فرم ها Multiple Document Interface ها یا فرم های MDI میباشند که خود حاوی فرم های کوچکتر (Child Forms) در درون خود هستند. فرم ها از دو قسمت تشکیل شده اند: یکی خود شیء فرم و کنترل های قرار گرفته در آن و دیگری ماژول در برگیرنده ی کدهای اجرایی آن فرم و اشیا درون آن (که به آن Form Module میگوییم). با انتخاب گزینه های View Object و View Code (کد های فرم ها در فضای Form Module قرار دارند) که با کلیک راست بر روی فرم نمایش داده میشوند، میتوانیم هر قسمت را ببینیم یا ویرایش نماییم.

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

Object Box و Procedure Box

در فضای کد نویسی Form ها (Form Modules و سایر Module ها) در بالا و سمت چپ کادر Object Box وجود دارد که لیستی از تمام اشیا قرار گرفته در Form در آن قرار دارد، هر کدام از اشیا را که میخواهید انتخاب نمایید، حال در سمت راست کادر فوق کادری تحت عنوان Procedure Box قرار دارد، با باز کردن این کادر متوجه میشویم که مثلاً برای یک کمبوباکس چندین Procedure وجود دارد (برای سایر Module ها با باز کردن این قسمت لیستی از Procedure های موجود در آن ماژول نمایش داده میشود)، مثلاٌ Click، با انتخاب کلیک یک Private Sub ComboBox1_Click ایجاد میشود که در واقع یک Procedure میباشد که فقط در سطح همین ماژول اعتبار دارد (به دلیل وجود کلمه ی Privet) و حاوی کد هایی است که در صورت کلیک کردن بر روی این کمبوباکس اجرا میشوند، در واقع در اینجا میخواهید مشخص کنید که کلیک کردن بر روی کمبو باکس چه نتایجی ایجاد کند.

برای درک این قسمت حتماً باید مفهوم اشیا (Object) و پروپرتی (Properties) را درک کرده باشید.

Project

یک یا یک سری ماژول را یک Project مینامیم، مثلاً شما ممکن است برای انجام کاری ناچار به ایجاد چند ماژول متفاوت شوید (به علت وجود Declaration های مختلف) به این مجموعه یک Project میگوییم. وقتی ما با اکسل سر و کار داریم، Project به معنی فایل اکسلی هست که ماژول ها در آن قرار گرفته اند، در یک فایل اکسل میتوانید به تعداد بیشما ماژول بوجود بیاورید.

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

اشیاء

اشیا همان Object ها هستند که به صورت خلاصه میتوان آن ها را ترکیبی از کدها و داده ها فرض نمود که میتوان بر روی آنها به صورت یکجا عملیات انجام داد و یا آن ها را به صورت یکجا و یک واحد مورد استفاده قرار داد. به عنوان مثال Application یک شیء است، یا فرم ها یا کنترل ها همگی شیء میباشند. اشیا خواص (Properties) مربوط به خود را دارند که هرکدام روش(Method) استفاده ی مختص خود را دارا میباشند.

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

زبان ویژوال بیسیک برای Application های دیگر هم مورد استفاده قرار میگیرد که فعلاً موضوع بحث این سایت نیست، خود Application اکسل یک شی (Object) است، اشیا در ویژوال بیسیک میتوانند در برگیرنده اشیا دیگر باشند، مثلاً شی Application در برگیرنده ی شی Workbook میباشد که به معنی فایل اکسلی که در آن کد نویسی میکنید میباشد که خود در برگیرنده ی شی (Object) شیت (Worksheet) میباشد و شیت در برگیرنده اشیا دیگر میباشد، این بحث در مقاله ای جداگانه به تفصیل بررسی خواهد شد.

هر شیء توسط یک کلاس توصیف و تعریف (Define) شده است.

Properties

پروپرتی یا Properties در مورد اشیا همانند تنظیمات آنها میباشند، مثلاً یک شی فونت (Font) دارای تنظیماتی مانند Bold بودن میباشد که یک پروپرتی Boolean (دو حالت دارد یا True و یا False) است، شی فونت زیر مجموعه شی Range است.

کلاس

کلاس ها یا Class ها در واقع توصیف هایی (Definition) برای Object ها میباشند، کلاس به عنوان یک Template که یک شیء را در زمان اجرای کد ها بوجود می آورند عمل میکنند. کلاس ها خواص (Properties) اشیا و روش های استفاده شده برای کنترل رفتار شی را توصیف میکنند. کلاس ها و ماژول ها خود جز اشیا هستند و خود آنها جزیی از شیء VBA میباشند.

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

پنجره کد نویسی

فضایی که در آن کد نوشته میشود را پنجره کد نویسی یا Code Window مینامیم، پنجره کد نویسی میتواند انواع ماژول و یا پنجره کد نویسی مربوط به هر Sheet باشد.

پنجره کد نویسی شیت ها

که حاوی کدهای نوشته شده برای هر شیت میباشد. در واقع هر Sheet از اکسل یک شیء است که در فضای اختصاص یافته به هر شیت شما میتوانید کدهای مربوط به آن شیت را وارد نمایید. به عبارتی دیگر، پنجره کد نویسی شیت ها فضای اختصاص یافته به هر شیت به عنوان یک Object میباشد که در آن میتوان برای Event های مختلف کد نویسی کرد، مثلاً شما میخواهید تعیین کنید که اگر کاربری یک شیت را انتخاب کرد چه اتفاقی بیفتد، انتخاب آن شیت توسط اربر یک Event است که برنامه نویس در پنجره کد نویسی شیت ها برای این Event برنامه نویسی میکند.

Container

یک شیء که در بر گیرنده ی اشیاء دیگر میباشد را Container میگوییم.

Method

متد ها (Methods) یا روش ها، Procedure هایی هستند که بر روی اشیا عمل میکنند. هر متد یک Procedure است که بر روی یک شیء عمل میکند.

Range

محدوده یا Range به یک یا چند سلول اکسل گفته میشود، هر Range یا از یک سلول تشکیل شده و یا از تعدادی سلول که در کنار یکدیگر قرار دارند. به عنوان مثال A1 یک Range است که دارای یک سلول میباشد و A1:B3 هم یک Range با تعداد شش سلول میباشد.

Cells

Cells هم مانند Range برای اشاره به سلول های اکسل در کدهای ویژوال بیسیک استفاده میشود، با این تفاوت که Cells تنها به یک سلول اشاره میکند.

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

اشتراک گذاری در شبکه های اجتماعی: share on facebook share on google plus share on linkedin

۴ نظر

  1. علیرضا

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

    1. حامد قدیمی

      ماکرو نویسی به معنی کد نویسی میباشد، در اکسل قابلیت کد نویسی به زبان ویژوال بیسیک وجود دارد، به این معنی که زبان برنامه نویسی ویژوال بیسیک با اکسل تلفیق شده است، اگر شما هنگامی که اکسل باز است کلید Alt+F11 را فشار دهید وارد محیط ویژوال بیسیک میشوید که میتوانید در این محیط کد نویسی نمایید (ویژوال بیسیک همواره همراه اکسل نصب میشود و در تمام اکسل ها وجود دارد). موفق باشید.

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