کلاس و شیء در VBA | مراحل ایجاد کلاس و شیء در VBA

کلاس و شیء دو جنبه اصلی برنامه نویسی شیء گرا (OOP) می باشند. در این آموزش با نحوه ایجاد کلاس و شیء در VBA آشنا می شویم.

کلاس در VBA

کلاس قالب ایجاد شیء در برنامه نویسی شیء گرا (OOP) می باشد. در برنامه نویسی شیء گرا ابتدا قالب شیء با استفاده از کلاس ایجاد و سپس با استفاده از قالب ایجاد شده اشیاء متعدد ایجاد می گردد.

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

ایجاد کلاس در VBA

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

مراحل ایجاد ماژول کلاس

ایجاد ماژول کلاس در VBA
روی گزینه Class Module کلیک نمایید تا ماژول کلاس ایجاد گردد.
  1. ویرایشگر کد VBA در اکسل یا آفیس خود باز نمایید. برای دریافت اطلاعات بیشتر درباره باز کردن ویرایشگر کد VBA این آموزش را مشاهده نمایید.
  2. از منوی Insert روی گزینه Class Module کلیک نمایید تا VBA ماژول کلاس را ایجاد نماید.
  3. نام ماژول کلاس را می توانید پس از ذخیره فایل اکسل یا اکسس تعیین نمایید.

نام کلاس در VBA نامی است که برای ماژول کلاس انتخاب می نمایید.

شیء در VBA

شیء یک نمونه از یک کلاس می باشد، که از روی قالبی که در کلاس تعریف شده است ایجاد می گردد. اشیاء خصوصیات و رفتارهای خود را از کلاس می گیرند.

ایجاد شیء

اعلان متغیر شیء

اولین قدم برای ایجاد یک شیء در VBA اعلان یک متغیر برای نگهداری شیء می باشد. متغیری که شیء را نگهداری می نماید می تواند یا از نوع کلاسی که قرار است نمونه ای از آن باشد و یا از نوع Object اعلان شود.

روش های ایجاد شیء در VBA

گفتیم که هر شیء یک نمونه جدید از یک کلاس است، بنابراین برای اعلان شیء باید تعیین کنید که شیء موردنظر نمونه ای از کدام کلاس می باشد.

ایجاد یک شیء جدید در VBA به دو روش امکان پذیر می باشد:

ایجاد شیء هنگام اعلان متغیر

اعلان متغیر در VBA با دستور Dim، دستور Private، دستور Public یا دستور Static انجام می شود. اگر هنگام اعلان متغیر از کلمه کلیدی New استفاده نمایید VBA هنگام اعلان متغیر یک شیء جدید از یک کلاس ایجاد خواهد کرد.

اگر از کلمه کلیدی New در اعلان متغیر استفاده کردید، فقط نام یک کلاس باید پس از New قرار گیرد. سایر انواع داده ذاتی نظیر String باعث بروز خطا خواهند شد.

کدهای زیر یک شیء جدید هنگام اعلان متغیر ایجاد می کنند:

ایجاد شیء با استفاده از دستور Set

دستور Set در VBA دو کاربرد اصلی دارد:

  1. تعیین مرجع یک شیء به یک متغیر شیء؛ منظور از مرجع یک شیء همان کلاسی است که قالب شیء در آن تعریف شده است.
  2. تخلیه کلیه منابع سیستم و حافظه اختصاص یافته به یک شیء

شکل کلی دستور Set به صورت زیر می باشد:

با استفاده از دستور Set می توانید مرجع یک متغیر شیء از قبل اعلان شده را تعیین یا تغییر نمایید.

استفاده از کلمه کلیدی New در دستور Set یک شیء جدید از کلاس ایجاد می نماید.

در خط اول کد بالا MyObject یک متغیر است که از نوع داده Object اعلان شده است. MyClass نام یک ماژول کلاس است که توسط کاربر ایجاد شده است.

در خط دوم با استفاده از دستور Set به کامپایلر اعلام می کنیم که MyObject یک نمونه جدید از کلاس MyClass می باشد و باید خواص و رفتارهایی که برای MyClass تعیین کرده ایم را داشته باشد.

کد بالا مشابه کد قبلی می باشد با این تفاوت که در این کد هنگام اعلان متغیر شیء صریحاً به کامپایلر اعلام کردیم که متغیر MyObject قرار است که یک شیء از کلاس MyClass باشد ولی در کد قبلی یک Object اعلان کردیم که می تواند هر شیء ای باشد.

پیوند زودهنگام (Early-bound) متغیر به شیء در کد اخیر کارایی بهتری نسبت به پیوند دیرهنگام (Late-bound) دارد [1]. بنابراین توصیه می شود جاهایی که امکان آن وجود دارد از پیوند زودهنگام استفاده نمایید.

ایجاد شیء با استفاده از تابع CreateObject

تابع CreateObject یک شیء اکتیوایکس (ActiveX object) را ایجاد و بر می گرداند. با این تابع نیز می توانید یک شیء (فقط شیء اکتیوایکس) در VBA ایجاد نمایید.

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

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

یک × 2 =