Me در VBA | کاربرد کلمه کلیدی Me در VBA و برنامه نویسی شیءگرا

کلمه کلیدی Me در VBA مشابه یک متغیر ضمنی (Implicit) عمل می نماید. در این آموزش موارد کاربرد این کلمه کلیدی را در VBA و ارتباط آن با برنامه نویسی شیءگرا را بررسی می نماییم.

متغیر ضمنی (Implicit)

اعلان متغیرها در VBA به دو صورت صریح و ضمنی انجام می شود. یک متغیر ضمنی در VBA نیاز به اعلان ندارد. کلمه کلیدی Me یک متغیر ضمنی است که VBA بصورت خودکار در هر ماژول کلاس ایجاد می نماید.

Me بصورت خودکار به یک نمونه خاص از کلاسی که کد در آن اجرا شده است اشاره دارد. به زبان ساده کلمه کلیدی Me وقتی در یک ماژول کلاس بکار می رود به همان ماژول کلاسی که در آن نوشته شده است اشاره دارد.

توجه داشته باشید که Me فقط در ماژول های کلاس و اشیاء کلاس در دسترس می باشد و بنابراین بخشی از برنامه نویسی شیءگرا می باشد.

آیا می‌دانید:

آموزش VBA به شما امکان می‌دهد که با استفاده از اسکریپت‌های سفارشی، نرم‌افزارهای آفیس را به‌طور دقیق مطابق با نیازهای خود تنظیم کنید. این زبان قدرتمند می‌تواند بهره‌وری شما را در تمامی برنامه‌های آفیس افزایش دهد و کارهای تکراری و زمان‌بر را ساده‌تر کند.

کاربرد Me در VBA

با استفاده از کلمه کلیدی Me مقادیر ویژگی های یک کلاس را تغییر دهید و در صورت نیاز متدهای آن را اجرا نمایید. با توجه به کاربرد Me در ماژول های کلاس می توانیم کاربرد آن را در سه بخش زیر تقسیم بندی نماییم:

Me در اشیاء کلاس اکسس

Microsoft Access Class Objects
اشیاء کلاس مایکروسافت در اکسس

اشیاء کلاس اکسس شامل فرم ها و گزارش هایی است که در یک فایل اکسس ایجاد کرده اید. در تصویر می توانید نمای پنجره مرور پروژه در یک فایل اکسس نمونه را مشاهده نمایید.

همانطور که در تصویر نیز مشخص می باشد Form1 و report1 به ترتیب یک فرم و یک گزارش هستند و در ذیل پوشه Microsoft Access Class Objects طبقه بندی شده اند.

اشیاء کلاس اکسس، کلاس هایی هستند که توسط مایکروسافت بطور اختصاصی برای برنامه اکسس برنامه نویسی و ایجاد شده اند. هر کدام از این اشیاء دارای خواص و متدهای مختص به خود هستند که لیست کامل آنها در مرورگر شیء ویرایشگر VBE ذیل کتابخانه Access در کلاس Form در دسترس می باشد.

مثال

در مثال زیر با استفاده از کلمه کلیدی Me هنگام رخداد بارگذاری فرم [1] کنترلی بر روی فرم به نام txtName برای کاربر غیرفعال می شود. Me در اینجا به فرم از اکسس که کد در آن نوشته شده است اشاره دارد.

Private Sub Form_Load()
    Me.txtName.Enabled = False
End Sub

Me در اشیاء کلاس اکسل

Microsoft Excel Objects
اشیاء کلاس اکسل

اشیاء کلاس اکسل شامل صفحه ها و کاربرگ اکسل است. در تصویر می توانید نمای پنجره مرور پروژه در یک فایل اکسل نمونه را مشاهده نمایید.

در تصویر 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

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