روال Property Set در VBA | کاربرد روال Property Set در شیءگرایی

در این آموزش کاربرد روال Property Set برای تعیین مرجع یک ویژگی در برنامه نویسی شیءگرا در VBA را بررسی می نماییم.

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

آموزش VBA برای هر کسی که به دنبال بهبود کارایی است، ضروری است. با یادگیری این زبان، می‌توانید ابزارهای شخصی‌سازی‌شده بسازید که به شما در تسریع و دقت بیشتر در کارها کمک می‌کنند.

معرفی روال Property Set

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

انواع داده پشتیبانی شده در VBA را می توانید در این صفحه مشاهده نمایید.

در آموزش قبل گفته شد کاربرد روال Property Let در VBA تعیین مقدار ویژگی یک کلاس می باشد، وقتی که نوع داده ویژگی یک کلاس Object باشد، تعیین مقدار برای آن بی معنا می باشد،‌ چرا که Object یک شیء است و باید کلاسی که معرف آن شیء است بعنوان مرجع آن تعیین گردد.

اختصاص مقدار به متغیری که حامل یک شیء است باعث بروز خطای حین اجرا (Run-Time Error '91') خواهد شد.

Run-Time Error '91'
وقتی که به یک متغیر شیء مقداری اختصاص می دهید، VBA خطای حین اجرای 91 را ایجاد می نماید.

کاربرد روال Property Set در برنامه نویسی شیءگرا

روال Property Set در VBA وقتی که ویژگی کلاس یک شیء باشد وارد عمل می شود و مرجع آن ویژگی را تعیین می نماید.

برای درک بیشتر در مثال زیر کاربرد روال Property Set را بطور کامل بررسی می نماییم.

مثال

در این مثال با استفاده از روال Property Set در VBA یک صفحه اکسل را به یک ویژگی کلاس متصل می نماییم.

یک ماژول کلاس با نام myWorkSheet ایجاد نمایید.

مراحل ایجاد ماژول کلاس در VBA را در این لینک می توانید مشاهده نمایید.

در پنجره کد ماژول کلاس 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 می توانید مقدار یک ویژگی را دریافت نمایید.

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