در این آموزش کاربرد روال Property Set برای تعیین مرجع یک ویژگی در برنامه نویسی شیءگرا در VBA را بررسی می نماییم.
معرفی روال Property Set
در برنامه نویسی شیءگرا وظیفه یک ویژگی یا صفت کلاس نگهداری داده ها می باشد. داده ای که توسط یک ویژگی نگهداری می شود می تواند هر یک از انواع داده پشتیبانی شده باشد.
در آموزش قبل گفته شد کاربرد روال Property Let در VBA تعیین مقدار ویژگی یک کلاس می باشد، وقتی که نوع داده ویژگی یک کلاس Object باشد، تعیین مقدار برای آن بی معنا می باشد، چرا که Object یک شیء است و باید کلاسی که معرف آن شیء است بعنوان مرجع آن تعیین گردد.
اختصاص مقدار به متغیری که حامل یک شیء است باعث بروز خطای حین اجرا (Run-Time Error '91'
) خواهد شد.
کاربرد روال Property Set در برنامه نویسی شیءگرا
روال Property Set در VBA وقتی که ویژگی کلاس یک شیء باشد وارد عمل می شود و مرجع آن ویژگی را تعیین می نماید.
برای درک بیشتر در مثال زیر کاربرد روال Property Set را بطور کامل بررسی می نماییم.
مثال
در این مثال با استفاده از روال Property Set در VBA یک صفحه اکسل را به یک ویژگی کلاس متصل می نماییم.
یک ماژول کلاس با نام myWorkSheet ایجاد نمایید.
در پنجره کد ماژول کلاس myWorkSheet با استفاده از کد زیر یک ویژگی با نام clsWS ایجاد نمایید.
Private clsWS As Worksheet
دستور Private در کد بالا به این دلیل استفاده شده است که نمی خواهیم ویژگی clsWS در خارج از کلاس قابل دیدن باشد و اطلاعات درون آن مخفی (کپسوله) باشد.
Property Set setWs(userWS As Worksheet)
Set clsWS = userWS
End Property
در کد بالا روال setWs مرجع ویژگی clsWS را صفحه ای که در آرگومان userWS مشخص می شود تعیین می نماید.
برای امتحان کدها و مشاهده نحوه تعیین مرجع یک ویژگی کلاس، در یک ماژول استاندارد کدهای زیر را وارد نمایید.
Sub test()
Dim myObject As New myWorkSheet
Set myWorkSheet.setWs = ThisWorkbook.Sheets(1)
End Sub
در خط 2 شیء myObject را از روی کلاس myWorkSheet ایجاد کردیم.
در خط 4 مرجع ویژگی clsWS کلاس myWorkSheet را با استفاده از روال Property Set بر روی اولین صفحه کاربرگ (اکسل) فعلی (ThisWorkbook) تعیین کردیم.
ملاحظات
هنگام استفاده از روال Property Set بخاطر داشته باشید که :
- نوع داده ویژگی اعلان شده در کلاس باید Object یا نام کلاسی که به آن تعلق دارد باشد.
- روال Property Set باید حداقل یک آرگومان از نوع داده مشابه نوع داده اعلان شده برای ویژگی کلاس داشته باشد.
- استفاده از دستور Set در بدنه روال Property Set اجباری می باشد، چرا که باید با دستور Set مرجع ویژگی کلاس تعیین شود.
در آموزش بعدی خواهید دید که چگونه با استفاده از روال Property Get می توانید مقدار یک ویژگی را دریافت نمایید.
بیشتر بخوانید
توابع توکار VBA | لیست کامل توابع داخلی در ویژوال بیسیک
عملگرهای VBA | انجام عملیات روی داده ها و ایجاد عبارت ها
حلقه در VBA | ایجاد حلقه برای تکرار دستورات در ویژوال بیسیک
کدهای VBA | آشنایی با کدها و دستور زبان برنامه نویسی VBA
دستور IF | اجرای مشروط کد با استفاده از عبارت های شرطی و منطقی
آرایه در VBA | آرایه ها و کاربرد آن ها در برنامه نویسی
میدان دید متغیر در VBA | نحوه دسترسی به متغیرها در قسمت های مختلف پروژه