کلمه کلیدی Me در VBA مشابه یک متغیر ضمنی (Implicit) عمل می نماید. در این آموزش موارد کاربرد این کلمه کلیدی را در VBA و ارتباط آن با برنامه نویسی شیءگرا را بررسی می نماییم.
متغیر ضمنی (Implicit)
اعلان متغیرها در VBA به دو صورت صریح و ضمنی انجام می شود. یک متغیر ضمنی در VBA نیاز به اعلان ندارد. کلمه کلیدی Me یک متغیر ضمنی است که VBA بصورت خودکار در هر ماژول کلاس ایجاد می نماید.
Me بصورت خودکار به یک نمونه خاص از کلاسی که کد در آن اجرا شده است اشاره دارد. به زبان ساده کلمه کلیدی Me وقتی در یک ماژول کلاس بکار می رود به همان ماژول کلاسی که در آن نوشته شده است اشاره دارد.
توجه داشته باشید که Me فقط در ماژول های کلاس و اشیاء کلاس در دسترس می باشد و بنابراین بخشی از برنامه نویسی شیءگرا می باشد.
کاربرد Me در VBA
با استفاده از کلمه کلیدی Me مقادیر ویژگی های یک کلاس را تغییر دهید و در صورت نیاز متدهای آن را اجرا نمایید. با توجه به کاربرد Me در ماژول های کلاس می توانیم کاربرد آن را در سه بخش زیر تقسیم بندی نماییم:
Me در اشیاء کلاس اکسس
اشیاء کلاس اکسس شامل فرم ها و گزارش هایی است که در یک فایل اکسس ایجاد کرده اید. در تصویر می توانید نمای پنجره مرور پروژه در یک فایل اکسس نمونه را مشاهده نمایید.
همانطور که در تصویر نیز مشخص می باشد Form1 و report1 به ترتیب یک فرم و یک گزارش هستند و در ذیل پوشه Microsoft Access Class Objects طبقه بندی شده اند.
اشیاء کلاس اکسس، کلاس هایی هستند که توسط مایکروسافت بطور اختصاصی برای برنامه اکسس برنامه نویسی و ایجاد شده اند. هر کدام از این اشیاء دارای خواص و متدهای مختص به خود هستند که لیست کامل آنها در مرورگر شیء ویرایشگر VBE ذیل کتابخانه Access در کلاس Form در دسترس می باشد.
مثال
در مثال زیر با استفاده از کلمه کلیدی Me هنگام رخداد بارگذاری فرم [1] کنترلی بر روی فرم به نام txtName برای کاربر غیرفعال می شود. Me در اینجا به فرم از اکسس که کد در آن نوشته شده است اشاره دارد.
Private Sub Form_Load()
Me.txtName.Enabled = False
End Sub
Me در اشیاء کلاس اکسل
اشیاء کلاس اکسل شامل صفحه ها و کاربرگ اکسل است. در تصویر می توانید نمای پنجره مرور پروژه در یک فایل اکسل نمونه را مشاهده نمایید.
در تصویر Sheet1 و ThisWorkbook به ترتیب یک صفحه و کاربرگ اکسل هستند و در ذیل پوشه Microsoft Excel Objects طبقه بندی شده اند.
لیست کامل آنها در مرورگر شیء ویرایشگر VBE ذیل کتابخانه Excel در دسترس می باشد.
مثال
در مثال زیر در ماکروی به نام sheetMacro با استفاده از Me مقدار سلول A1 صفحه را تغییر می دهیم. Me در کد زیر به صفحه ای از اکسل که کد در آن نوشته شده است اشاره دارد. بدیهی است که سلول A1 نیز در صفحه ای که Me به آن اشاره دارد قرار دارد.
Public Sub sheetMacro()
Me.Cells(1, 1).Value = 100
End Sub
Me در کلاس های ایجاد شده توسط کاربر
در مثال زیر در کلاس myWorkSheet آموزش روال Property Get یک متد جدید به نام meKeyword ایجاد می نماییم.
در این متد با استفاده از Me مرجع ویژگی setWs را تعیین و با تابع MsgBox ویژگی firstCell را به کاربر نمایش می دهیم.
Private clsWS As Worksheet
Property Set setWs(userWS As Worksheet)
Set clsWS = userWS
End Property
Property Get firsCell()
firsCell = clsWS.Cells(1, 1)
End Property
Sub meKeyword()
Set Me.setWs = ThisWorkbook.Sheets(1)
MsgBox Me.firsCell
End Sub
حالا می توانیم یک ماکرو جدید ایجاد کنیم و متد meKeyword از کلاس myWorkSheet را اجرا نماییم.
Sub testMacro()
Dim mySheet As New myWorkSheet
mySheet.meKeyword
End Sub
بیشتر بخوانید
توابع توکار VBA | لیست کامل توابع داخلی در ویژوال بیسیک
عملگرهای VBA | انجام عملیات روی داده ها و ایجاد عبارت ها
حلقه در VBA | ایجاد حلقه برای تکرار دستورات در ویژوال بیسیک
کدهای VBA | آشنایی با کدها و دستور زبان برنامه نویسی VBA
دستور IF | اجرای مشروط کد با استفاده از عبارت های شرطی و منطقی
آرایه در VBA | آرایه ها و کاربرد آن ها در برنامه نویسی
میدان دید متغیر در VBA | نحوه دسترسی به متغیرها در قسمت های مختلف پروژه