در آموزش قبلی با ماکرونویسی در اشیاء اکسل آشنا شدیم. در این آموزش می خواهیم با ماکرونویسی در ماژول (Module) آشنا شویم و تفاوت نوشتن ماکرو در ماژول نسبت به اشیاء اکسل را بررسی کنیم.
مدت زمان تخمینی مطالعه: 3 دقیقه
فهرست مطالب
پیش نیازهای آموزشی
آشنایی با ماژول استاندارد (ماژول کد) در VBA
مراحل درج یک ماژول استاندارد در VBE
روش های ایجاد شیء در VBA
میدان دید در VBA
مقدمه
در آموزش قبل گفته شد که اشیاء اکسل به هنگام ایجاد فایل اکسل بطور خودکار توسط VBA ایجاد و در پوشه Microsoft Excel Objects طبقه بندی می کند.
مایکروسافت با ایجاد اشیاء اکسل رخدادهای فایل اکسل جاری را مدیریت و بخشی از کار توسعه دهنده را راحت نموده و ایجاد شیء را خودکار نموده است. در این آموزش می خواهیم بجای ماکرونویسی در اشیاء اکسل، ماکرو را در یک بخش عمومی تر بنام ماژول (Module) ایجاد نماییم.
ماکرونویسی در ماژول VBA
ایجاد ماکرو در ماژول
برای ایجاد ماکرو در ماژول کافیست در ویرایشگر VBE یک ماژول ایجاد و در پنجره کد آن یک روال سابروتین با دسترسی Public ایجاد نمایید. بعنوان مثال کد زیر یک ماکرو بنام moduleMacro ایجاد می نماید.
Public Sub moduleMacro()
End Sub
حالا اگر لیست ماکروها را باز کنید، ماکروی moduleMacro را در لیست مشاهده خواهید کرد.
مثال
کاربرگ اکسل اشاره به یک فایل اکسل دارد [1]. در این مثال با استفاده از ماکرونویسی در ماژول با نحوه مدیریت کاربرگ فعلی اکسل در VBA آشنا می شویم.
در ویرایشگر کد VBE یک ماژول استاندارد ایجاد کنید و کد زیر را در پنجره کد آن کپی نمایید.
Option Explicit
Public Sub moduleMacro()
Dim WB As Workbook
Set WB = ThisWorkbook
WB.Sheets.Add after:=WB.Sheets(1), Count:=1
End Sub
تحلیل کد مثال:
خط 1 : به کامپایلر اعلام کردیم که متغیرها صریح اعلان می شوند. (روش های اعلان متغیر در VBA را می توانید در این لینک مشاهده نمایید.)
خط 3 و 9 : خطوط شروع و پایان روال Sub می باشند و تعیین می کنند که بدنه روال بین این خطوط قرار دارد. بدنه ماکرو نیز همین خطوط می باشد.
خط 4 : اعلان متغیر شیء از نوع کلاس Workbook می باشد. توجه داشته باشید که اگر خط 1 استفاده نمی شد لزومی به استفاده از این خط نمی باشد.
خط 6 : تعیین مرجع متغیر شیء WB؛ در این خط مشخص کرده ایم که متغیر WB اشاره به کاربرگ جاری (ThisWorkbook) دارد. در واقع با این خط یک شیء جدید ایجاد کردیم. (اطلاعات بیشتر درباره ایجاد شیء با دستور Set را می توانید در این لینک مشاهده نمایید.)
خط 7 : از خط 6 به بعد هر عملیاتی که روی متغیر WB انجام شود در کاربرگ فعلی (فایلی که ماژول در آن قرار دارد) اعمال خواهد شد. این خط یک صفحه جدید بعد از اولین صفحه کاربرگ فعلی ایجاد می کند.
کاربرد ماکرونویسی در ماژول
اگر کد بالا را با کدی که در آموزش قبل در شیء ThisWorkbook مقایسه کنید، متوجه خواهید که برای ماکرونویسی در ماژول قبل از اینکه بتوانیم تغییراتی در کاربرگ فعلی اعمال کنیم باید شیء ای که آن اشاره دارد را ایجاد نماییم.
ماکرونویسی در ماژول نسبت به ماکرونویسی در اشیاء اکسل مراحل بیشتری دارد، با این وجود ماژول استاندارد بالاترین میدان دید را در یک پروژه VBA دارد و بنابراین کدها و متغیرهای یک ماژول استاندارد در همه پروژه در دسترس خواهند بود.