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

در این آموزش از مبحث برنامه نویسی شیء گرا در VBA کاربرد روال Property Get و خواندن مقدار یک ویژگی کلاس در VBA را بررسی می نماییم.

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

با آموزش VBA می‌توانید از قابلیت‌های پیشرفته‌ای مانند ایجاد اسکریپت‌های خودکارسازی و ساخت ماکروها در تمام نرم‌افزارهای آفیس بهره‌مند شوید. این زبان برنامه‌نویسی به شما اجازه می‌دهد تا فرایندهای پیچیده را به روشی ساده و سریع بهینه کنید.

معرفی روال Property Get

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

هر دو روال Property Let و Property Set باعث می شوند که یک داده در شیء ایجاد شده از کلاس ذخیره شود. در واقع این دو روال فقط نوشتنی (Write-only) می باشند و نمی توانید داده ای را از درون شیء بخوانند.

برای خواندن داده ها از درون شیء باید از روال Property Get استفاده نماییم. وقتی که در ساختار یک کلاس برای یک ویژگی، یک روال Property Get تعریف شود امکان خواندن مقدار آن ویژگی در خارج از شیء نیز مهیا می شود.

دریافت مقدار یک ویژگی با استفاده از روال Property Get

برای اینکه ویژگی یک شیء خواندنی نیز باشد بایستی از قبل روال Property Get در ساختار کلاسی که شیء به آن تعلق دارد اعلان شده باشد.

دریافت مقدار ویژگی ایجاد شده با روال Property Let

در مثال کلاس Fruit در آموزش روال Property Let وقتی که خواستیم مقدار ویژگی name را برای شیء orange دریافت کنیم کامپایلر خطای Invalid use of property را ایجاد و برنامه متوقف گردید.

برای اینکه بتوانیم ویژگی name را خواندنی نیز بکنیم، کد زیر را در پنجره کد کلاس Fruit اضافه نمایید.

Property Get name() As String
    name = fruitName
End Property

حالا اگر مجدداً در یک ماژول استاندارد کد زیر را کپی و در پنجره Immediate نام روال test را تایپ و کلید Enter را فشار دهید. ملاحظه می کنید که این دفعه خطای Invalid use of property را دریافت نمی کنید و مقدار ویژگی در پنجره Immediate چاپ می شود.

Sub test()
Dim orange As New Fruit
Dim objectName As String

    orange.name = "orange"
    
    objectName = orange.name

    Debug.Print objectName
End Sub

دریافت مقدار ویژگی ایجاد شده با روال Property Set

گفته شد که ویژگی ای که با استفاده از روال Property Set مرجع آن تعیین می شود، خودش یک شیء می باشد. بنابراین دریافت مقدار برای یک شیء امکان پذیر نمی باشد و خطای حین اجرا (Run-Time Error '91') را ایجاد می نماید.

در اینگونه موارد فقط می توانیم ویژگی یک ویژگی را دریافت نماییم. برای باز شدن موضوع مثال روال Property Set را در نظر بگیرید. روال setWs مرجع ویژگی clsWS را تعیین می کرد. ویژگی clsWS یک شیء از کلاس Worksheet است، یعنی در واقع یک کاربرگ اکسل می باشد.

یکی از ویژگی های کلاس Worksheet ویژگی Cells می باشد که یک ویژگی فقط خواندنی می باشد و مقداری که در یک سلول وجود دارد را برمی گرداند. در کد زیر با استفاده از این ویژگی کلاس Worksheet که در ویژگی clsWS نیز وجود دارد می خواهیم مقدار اولین سلول اولین صفحه کاربرگ جاری اکسل را دریافت نماییم.

در پنجره کد کلاس myWorkSheet کد زیر را اضافه نمایید.

Property Get firsCell()
    firsCell = clsWS.Cells(1, 1)
End Property

در یک ماژول استاندارد کد زیر را کپی نمایید و سپس در پنجره Immediate نام روال test را تایپ و کلید Enter را فشار دهید.

Sub test()
Dim mySheet As New myWorkSheet
    
    Set mySheet.setWs = ThisWorkbook.Sheets(1)
    Debug.Print mySheet.firsCell

End Sub

هر مقداری که در اولین سلول در اولین صفحه اکسل نوشته شده باشد در پنجره Immediate چاپ خواهد شد.

دریافت فایل اکسل مثال ها

ملاحظات

هنگام استفاده از روال Property Get در VBA بخاطر داشته باشید که :

  • تعداد پارامتر (آرگومان) های روال Property Get باید کمتر از روال Property Let یا Property Set متناظر با آن باشد.
  • نوع داده روال Property Get باید دقیقاً مشابه نوع داده روال Property Let یا Property Set متناظر با آن باشد.

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