PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تفاوت بین متد و property در VBA



Javid Mokhtari
2012/03/26, 01:27
فرق بین method و property:

property ها برای تخصیص یک مقدار مورد استفاده قرار میگیرند.یعنی وقتی می نویسیم cells(1,1).value ،سلول A1 آماده است تا مقداری را برای خود بگیرد.یعنی property مقدار پذیر است.پس value یک property است.
اما method ها مقداری را به خود نمیگیرند،بلکه عملیاتی را برای ما انجام می دهند.یعنی وقتی می نویسیم cells(1,1).select اینجا دیگر مقداری به سلولA1 اختصاص نمی گیرد،بلکه عملی را برای ما انجام میدهد.یعنی سلول A1 را برای ما انتخاب می کند.پس select یک method است.

طریقه شناسائی method ها و property ها :
ابتدا به قسمت object Browser برید(F2)
آنهائی که پشتشان یک پوشه یا جعبه سبز رنگ وجود دارد،method هستند
آنهائی که پشتشان یک دست که یک برگه را گرفته است، وجود دارد،property هستند

اگه یک قسمت مجزا برای این بحث اختصاص داده می شد خیلی خوب بود.
این رو از توضیحات آقای داوری برداشتم و اینجا قرار دادم تا موضوع مرتبط یک جا جمع بشه.


میشه درباره کد های زیر بیشتر توضیح...:


with
set
is Nothing
xlColorIndexAutomatic
Intersect


1- with عملکرد ساده ای داره. فقط برای کوتاه کردن کد نویسی ازش استفاده می کنن.

مثلا:
به جای


Range("B2:P16").Font.Bold = False
Range("B2:P16").Interior.ColorIndex = xlColorIndexAutomatic
Range("B2:P16").Font.color = blue

برای اینکه از تکرار جلوگیری کنیم میشه بنویسیم:


With Range("B2:P16")
.Font.Bold = False
.Interior.ColorIndex = xlColorIndexAutomatic
.Font.color = blue
End With


2- set در زبان ویژوال بیسیک برای نسبت دادن یک شی به شی دیگر استفاده میشه:
اولا باید فرق شی و متغیر رو بدونی.
مثلا

dim a as integer
خوب این یک متغیر است و به راحتی برای نسبت دادن از یک مساوی استفاده میشه کرد. مثلا

a= target.row

اما range یک شی هست. همچنین workbook, worksheet, و row و column. اینها شی هستند که برخی باز شامل شی هایی هم میشوند. مثلا range ممکنه شامل چند row بشه و row ممکنه شامل چند cell بشه. در حالی که range خودش شی ای از شی های worksheet هایی هست که خود این worksheet ها فرزند یک workbook هستش. Smile

حالا این بحث خیلی مفصلی هست. اما به هر صورت برای نسبت دادن یک شی به یک شی جدید از عبارت set استفاده می کنیم.

مثلا
dim a as range خوب این یک شی از نوع range هست
حالا می گیم

a = range("A1:A10") غلطه
باید بنویسی:

set a = range("A1:A10")

اگر اینطور عمل کنی. a و
range("A1:A10") معنی واحدی میدن.
یعنی a.intorior.backcolor رنگ پشت زمینه اون منطقه A1 نا A10 رو معنی میده

a.intorior.backcolor= black


با این شی ها کارای زیادی میشه کرد. یه مطالعه بکنشون.
برای پیدا کردن شی مادر یا شی کافیه بنویسی:

dim b as range
set b = a.Parent

به این صورت.




3- is nothing در زبان VB معنی NULL رو میده. یعنی یک شی ای هنوز به شی خاصی نسبت داده نشده است. ببین یک متغیر وقتی تعریف میشه مقدار دهی اولیه میشه. اگر هم نشه به هرحال یک مقدار داخل خودش داره. اما یک شی وقتی تعریف میشه NULL هست. یعنی به هیچ چیزی اشاره نمی کنه. مگر شما به یک شی نسبت بدهیش:

مثلا:


dim a as range
تا الان a یک شی NULL هست.

باید یکی از دو روش زیر رو انتخاب کنی. بگی a یک شی جدید است یا a یک شی ای هست که الان وجود داره.


set a = new range به مفهوم اینه که a یک شی جدید است.

set a = range("A1:A10") به مفهوم اینه که a همون شی ای است که الان وجود داره و به خونه های A1 تا A10 اشاره داره.


پس وقتی میگیم if a is nothing then یعنی اگر هنوز a وجود نداره یعنی هیچ جایی واسه a تعریف نشده. این کارو بکن.

4- xlColorIndexAutomatic نماینده کد رنگ اتوماتیک هست. اینو بجای یک عدد که نمایند رنگ هست میتونی استفاده کنی. البته اگر حافظت خوبه می تونی عدد رو هم حفظ کنی :دی

5- Intersect دو تا range مختلف رو به عنوان ورودی می گیره و فضای مشترک بین این دو رو برای ما مشخص می کنه. می تونی از این کد برای اینکه بدونی دو range با هم نقطه مشترک دارن یا نه استفاده کنی.