اگر تا به حال در VBA کد نوشتهاید، حتماً با واژه ماژول (Module) روبهرو شدهاید. اما واقعاً ماژول چیست و چه تفاوتی با کلاس دارد؟ در این آموزش از مجموعه آموزشهای رایگان ایران VBA بهصورت گامبهگام انواع ماژول در VBA را بررسی میکنیم و تفاوت بین ماژول استاندارد و ماژول کلاس را یاد میگیریم.
ماژول چیست؟
طبق تعریف مایکروسافت در واژهنامه VBE، ماژول مجموعهای از اعلانها و روالها (Procedures) است که در کنار هم واحدی مستقل از کد را تشکیل میدهند.
در زبان انگلیسی، ماژول به معنای قطعهای مستقل یا واحدی از یک سازه بزرگتر است. در برنامهنویسی هم ماژول همین نقش را دارد: بخشی از برنامه که کار مشخصی انجام میدهد و میتواند بهصورت جداگانه توسعه و در پروژههای مختلف استفاده شود.
انواع ماژول در VBA
در محیط ویرایشگر VBA (VBE)، ماژولها در دو پوشه اصلی طبقهبندی میشوند:

همانطور که در تصویر مشاهده میکنید، دو نوع ماژول در VBA وجود دارد:
- Standard Modules (ماژول استاندارد) – در پوشه
Modules - Class Modules (ماژول کلاس) – در پوشه
Class Modules
ماژول استاندارد (Standard Module)
ماژول استاندارد همان چیزی است که اغلب با آن سروکار داریم. این نوع ماژول شامل روالها، توابع، نوع دادههای کاربر (Type) و اعلانهای عمومی است. سطح دسترسی پیشفرض در ماژول استاندارد عمومی (Public) است، به این معنی که کدهای موجود در آن از تمام بخشهای پروژه در دسترس هستند.
کاربرد ماژول استاندارد
از آنجا که ماژول استاندارد سطح دسترسی عمومی دارد، برای نگهداری کدهایی مناسب است که در بخشهای مختلف پروژه مورد استفاده قرار میگیرند. بهعنوان مثال، توابع کمکی، روالهای محاسباتی، یا متغیرهای سراسری.
بهعنوان نمونه، فرض کنید برنامهای دارید که باید نام کاربری فرد واردشده را در تمام فرمها نمایش دهد. در این حالت میتوانید متغیر عمومی را در ماژول استاندارد تعریف کنید تا از همهجا قابل دسترسی باشد.
در ماژول استاندارد، سبک برنامهنویسی رویهای (Procedural) است. کدها در قالب روالها (Sub) و توابع (Function) نوشته میشوند و هر روال وظیفه خاصی را انجام میدهد.
مراحل ایجاد ماژول استاندارد
برای افزودن یک ماژول استاندارد در اکسل یا اکسس مراحل زیر را انجام دهید:
-
ویرایشگر VBA را باز کنید.
برای راهنمایی بیشتر، آموزش چگونه ویرایشگر VBA را باز نمایم؟ را ببینید.
-
از منوی Insert گزینه Module را انتخاب کنید.
با این کار یک ماژول جدید در پوشه
Modulesایجاد میشود (مثلاً Module1). حالا میتوانید کدهای خود را در آن بنویسید و در صورت نیاز نام آن را تغییر دهید.
ماژول کلاس (Class Module)
ماژول کلاس نوعی ماژول است که برای تعریف جزئیات یک کلاس استفاده میشود. هر کلاس شامل خواص (Properties) و متدها (Methods) است که رفتار یک شیء را مشخص میکنند.
بهعنوان مثال، میتوانید کلاسی با نام clsEmployee بسازید که شامل خاصیت Name و متد ShowInfo باشد. سپس از آن چندین نمونه (Object) مستقل ایجاد کنید.
در آینده در آموزشهای اختصاصی، بهصورت کامل وارد مبحث برنامهنویسی شیءگرا (OOP) در VBA خواهیم شد.
تفاوت ماژول استاندارد و ماژول کلاس
| ویژگی | ماژول استاندارد | ماژول کلاس |
|---|---|---|
| نوع برنامهنویسی | رویهای (Procedural) | شیءگرا (Object-Oriented) |
| ماهیت | کتابخانهای از روالها و توابع عمومی | الگوی تعریف اشیاء (Properties و Methods) |
| تعداد نمونهها | یکپارچه، بدون امکان تکثیر | میتواند چندین شیء از روی آن ساخته شود |
| سطح دسترسی | عمومی (در کل پروژه) | وابسته به نمونههای ساختهشده از کلاس |
سؤالات متداول درباره ماژولها در VBA
ماژول در VBA چیست؟
ماژول در VBA محلی برای نگهداری کدها، توابع و روالها است. این بخش کمک میکند تا کدها ساختاریافتهتر و قابلاستفاده مجدد باشند.
تفاوت بین ماژول استاندارد و کلاس چیست؟
ماژول استاندارد برای نوشتن توابع و رویههای عمومی استفاده میشود، در حالی که ماژول کلاس برای تعریف اشیاء (Objects) با ویژگیها و متدهای خاص کاربرد دارد.
چطور یک ماژول جدید در VBA اضافه کنیم؟
برای افزودن ماژول جدید، در محیط VBA Editor از منوی Insert → Module یا Insert → Class Module استفاده کنید. نوع انتخابشده تعیین میکند که کد در کدام بخش پروژه قرار گیرد.
آیا میتوان از متغیرهای عمومی در همه ماژولها استفاده کرد؟
بله، کافی است متغیر را در سطح عمومی (با دستور Public) در ماژول استاندارد تعریف کنید تا در تمام ماژولها و فرمهای پروژه در دسترس باشد.
مزیت ماژول استاندارد نسبت به کلاس چیست؟
ماژول استاندارد برای نگهداری توابع عمومی و کدهایی که وابستگی به شیء خاصی ندارند بسیار مناسب است. این ماژولها سادهتر بوده و سرعت اجرای بیشتری دارند، زیرا نیازی به ایجاد نمونه (Instance) ندارند.
مزیت ماژول کلاس نسبت به استاندارد چیست؟
ماژول کلاس زمانی مفید است که بخواهید دادهها و رفتارها را در قالب یک شیء تعریف کنید. این کار موجب سازماندهی بهتر کد و امکان استفاده از چندین نمونه مستقل از یک ساختار میشود.
متغیرهای گلوبال را باید در چه ماژولی و چگونه تعریف کرد؟
متغیرهای گلوبال را باید در یک ماژول استاندارد تعریف کرد. برای این کار در بالای ماژول بنویسید:
Public VariableName As Type
به این ترتیب متغیر در کل پروژه در دسترس خواهد بود.
بیشتر بخوانید
Me در VBA | کاربرد کلمه کلیدی Me در VBA و برنامه نویسی شیءگرا
روال Property Get در VBA | کاربرد روال Property Get در شیءگرایی
روال Property Set در VBA | کاربرد روال Property Set در شیءگرایی
روال Property Let در VBA | شیءگرایی و کپسوله سازی داده ها در VBA
خواص کلاس در VBA | ایجاد خواص کلاس با استفاده از اعلان متغیر در VBA
کلاس و شیء در VBA | مراحل ایجاد کلاس و شیء در VBA
برنامه نویسی شیءگرا (OOP) | مقدمه ای بر روش برنامه نویسی شیءگرا