آشنایی کامل با مفهوم Object در برنامه نویسی VBA

Object یا شی در اکسل یک از  آن مفاهیم پرکاربردی است که در دنیای برنامه نویسی شی گرا به دفعات با آن مواجه خواهید شد .

اساس و پایه تمام برنامه های مبتنی بر شی گرایی اشیا هستند .

بنابراین خیلی مهم است که بتوانید درک مهمی از این واژه داشته باشید  تا بتوانید در دنیای برنامه نویسی به پیشرفت های خوبی برسید .

شما باید به راحتی اشیا تحت کنترل یک برنامه را بشناسید با خصوصیات و ویژیگی های انها آشنا باشید تا بتوانید آنها را مدیریت کنید .

حتی در سطوح بالاتر زبانهای برنامه نویسی این امکان را برای شما فراهم می آورند که بتوانید اشیای مورد نیاز خود را طراحی و ایجاد کنید .

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

اما در قدم اول و قبل از اینکه بخواهیم خودمان به ایجاد اشیا در محیط اکسل بپردازیم لازم است که با همین اشیای موجود در اکسل آشنا شویم   و بدانیم که در کجاها و چگونه می توانیم از این اشیا در  محیط برنامه نویسی خود استفاده کنیم .

برنامه نویسی در محیط نرم افزارهای اکسل و اکسس تا حد بسیار زیادی از مفهوم شی گرایی پشتیبانی می کند .
بنابراین امروز می خواهیم به بررسی دقیق مفهوم شی در برنامه نویسی VBA  در محیط نر م افزار اکسل بپردازیم .

کار کردن با اشیا در محیط این زبان برنامه نویسی به هیچ عنوان سخت و مشکل نیست بلکه اشیا برای این بوجود آمده اند که کار برنامه نویسی را برای ما تا حد زیادی ساده کنند .

پس  با من تا انتهای این آموزش همرا باشید .

Object یا شی در اکسل  و برنامه نویسی VBA 

اول باید با خود کلمه شی یا همان چیزی کهدر برنامه نویسی تحت عنوان object  می شناسیم آشنا شویم .

و بدانیم که منظور ما از شی چیست ؟

برای اینکه ما با مفهوم شی بهتر آشنا شویم اجازه بدهید کمی به عقب برگردیم و با هم مفهوم متغیر را با هم بررسی کنیم .

البته ما در گذشته و درهمین سایت در مطلبی با عنوان آشنایی با مفهوم متغیر در زبان برنامه نویسی VBA  بطور مفصل در خصوص این مفهوم با هم صحبت کردیم .

اما در اینجا و از باب مرور و یادآوری مطالب گذشته می گوییم که ما در زبان برنامه نویسی VBA  متغیرهای متعددی داریم .

هدف اصلی یک متغیر این است که اطلاعات مد نظر ما را در خود ذخیره نماید .

در مورد اشیا هم قضیه به همین صورت است .

یعنی اشیا هم ساختارهایی هستند که  در صورت نیاز و صلاحدید ما می توانند اطلاعاتی را در خود ذخیره کنند .

برخلاف متغیرها که فقط می توانستند اطلاعات را در خود ذخیره کنند اشیا کاربردهای متنوعی می توانند داشته باشند که یکی از این کاربردها ذخیره و نگهداری اطلاعات است . 

مفهوم مجموعه یا Collection

وقتی که ما در برنامه نویسی VBA  در مورد اشیا صحبت می کنیم نمی توانیم اشاره ای به مفهوم مجموعه ها نکنیم .

مجموعه ها هم یکی از مفاهیم کاربردی در زبان برنامه نویسی VBA  هستند .

بطور خلاصه به مجموعه چند شی که با هم در یک گروه قرار می گیرند در اصطلاح مجموعه می گویند .

بعنوان مثال ما وقتی در دنیای پیرامون خود اشاره به مجموعه پرندگان می کنیم به خوبی می دانیم که اشاره به چند پرنده می کنیم و یا مجموعه خودروها اشاره به چند خودرو دارد .

 

Object یا شی در اکسل

 

در برنامه نویسی VBA  هم به همین شکل است .

وقتی که ما صحبت از مجموعه ورک شیتها می کنیم منظورمان ورک شیتهای موجود در اکسل است .

یا وقتی اشاره به مجموعه کامنتها می کنیم منظورمان تمامی کامنتهای موجود در اکسل است .

اکسل این این امکان را می دهد که اعضای یک مجموعه را حذف کنیم یا عضو جدیدی به یک مجموعه اضافه کنیم .

به هر کدام از اعضای یک مجموعه در اصطلاح شی می گوییم .

چرا VBA  از اشیا استفاده می کند ؟

VBA  یک زبان برنامه نویسی شی گراست .

هدف یک زبان برنامه نویسی شی گرا ، شبیه سازی تمامی دنیای پیرامون ما در قالب اشیا می باشد .

زبان برنامه نویسی VBA  با دنیای بزرگی از اشیای موجود در نرم افزار اکسل سر و کار دارد .

شی گرایی این امکان را به ما می دهد که کارهای مورد نظر خود را در اکسل انجام دهیم بدون اینکه بدانیم چگونه این کار انجام می شود و اصلا نیازی هم به این دانستن نداریم .

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

بنابراین بیایید کمی بیشتر با این مفهوم کاربردی آشنا شویم .

خصوصیات اشیا  در دنیای برنامه نویسی  VBA .

 در زبان برنامه نویسی VBA  یک شی دارای ۳ خصوصیت است : 

۱- تمامی اشیا در این زبان برای خود دارای یک سری از ویژگی ها هستند .

مثلا یک سلول اکسل را در نظر بگیرید .

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

اینها ویژگی هایی هستند که توسط ما قابل تغییرند . 

یعنی ما می توانیم اندازه یک سلول را تغییر دهیم یا رنگ زمینه آن را از رنگی به رنگ دیگر در آوریم .

به این ویژگی ها در دنیای VBA  اصطلاحا Property  می گوییم .

۲- خصوصیت دیگر رویدادها هستند .

رویدادها در واقع نیرو یا رخدادی است که بر روی یک شی اعمال می شود . 

مثلا وقتی شما در محیط اکسل بر روی یک سلول خاص کلیک راست می کنید در واقع یک رخداد برای آن سلول اتفاق می افتد .

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

 

رویدادهای مثل on click – on dblclick – on  keypress -on timer    چند نمونه از این رویدادها هستند .

فقط کار شما بعنوان برنامه نویسی این است که تعیین کنید که در صورت وقوع هر کدام از این رویداد ها برنامه شما چه عکس العملی از خود نشان دهد .

۳- خاصیت دیگر مربوط به یک شی  متدها هستند .

متدها همان کارهایی هستند که اشیا می توانند برای ما انجام  دهند .

برخی از این کارها از قبل برای اشیا تعریف شده اند اما  بسیاری از کارها را ما خودمان می توانیم برای اشیا تعریف کنیم .

خوب با در نظر گرفتن مطالب بالا وارد مرحله عملی و اجرایی در خصوص کار با اشیا در محیط اکسل می کنیم .

فقط بعنوان خلاصه مطالب بالا این دو جمله را در ذهن خود حک کنید که :

  • هر آنچه که در داخل نرم افزار اکسل مشاهده می کنید برای زبان برنامه نویسی VBA  در حکم یک شی است .

یک سلول – مجموعه ای از چند سلول – یک یا چند شیت کاری  – یک یا چند کامنت – مجموعه فونت هایی که در اکسل وجود دارند همه و همه در حکم اشیا هستند.

  • تمامی اشیا در اکسل دارای سه خصوصیت ویژگی ها ، متدها و رویدادها هستند . کار ما به عنوان یک برنامه نویس این است که اولا به این اشیا دسترسی پیدا کنیم و سپس با استفاده از هر کدام از این سه خصیصه به مدیریت این اشیا بپردازیم . 

نحوه دسترسی به اشیا اکسل در محیط برنامه نویسی

اگر بخواهیم اشیایی را که در محیط اکسل هستند را از طریق کد نویسی در محیط VBA  مدیریت کنیم  باید چند مرحله را طی کنیم . 

اولین گام این است که تعیین کنیم که از بین اشیای فراوانی که در اکسل وجود دارند می خواهیم با کدام یک از آنها کار کنیم .

گفتیم که همه اشیا در محیط اکسل دارای سه خصوصیت هستند .

یکی از این سه خصوصیت را تحت عنوان property  می شناسیم . 

یک شی می تواند به نوبه خود دارای propertyهای متعدد باشد .

مثلا  یک خودرو می تواند دارای ویژگی هایی مثل رنگ ، اندازه ، سرعت ، میزان مصرف سوخت ، قیمت و …. باشد . 

در کنار همه این ویژگی ها هر خودرویی برای خود دارای یک نام می باشد .

در اکسل هم قضیه دقیقا به همین منوال است . 

یک سلول در اکسل دارای ویژگی های مختلفی می باشد که در کنار همه این ویژگی ها این سلول دارای یک نام برای خود می باشد .

حالا ما با ذکر نام این سلول  یا سلول ها می توانیم از طریق کد نویسی  تغییرات مورد نظر خود را در ویژگی های این سلول اعمال کنیم . 

بعنوان مثال به تصویر زیر دقت کنید .

Object یا شی در اکسل

ما در اینجا یک محدوده از سلول ها را معرفی کرده ایم. 

گفتیم که اکسل به این محدوده بعنوان یک شی نگاه می کند ..

اگر بعد از ثبت محدوده مورد نظر  یک نقطه بگذاریم بلافاصله برنامه به ما یک لیست نمایش می دهد .

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

برای راهنمایی بیشتر برنامه در کنار هر گزینه یک آیکون برای ما قرار می دهد .

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

Object یا شی در اکسل

این لیست در واقع شامل تمامی متدها و ویژگی هایی است که مربوط به شی یا محدوده مورد نظر ما  می شود .

حالا کاری که باید بکنیم این است که از بین این لیست آیتم مورد نظر خود را انتخاب کرده و تنظیمات و یا تغییرات مورد نظر را بر روی آن اعمال کنیم .

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

 گفتیم که اولین کاری که باید انجام بدهیم این است که به شی مورد نظر خود دسترسی پیدا کنیم .

برای این منظور می توانیم کدی مانند زیر بنویسیم .

پس ما در اینجا توانستیم به محدوده مورد نظر خود که حکم یک شی را دارد دسترسی پیدا کنیم . 

اما ما در اینجا  به هیچ کدام از شیت های کاری اشاره ای نکرده ایم .

یعنی نگفتیم که این محدوده از سلول ها در کدام یک از شیت ها قرا دارند .

حالا اگر ما بعنوان مثال ۳ شیت کاری داشته باشیم ولی هیچ نامی از هیچ کدام از این شیتها در ساختار کد خود نبریم برنامه بطور پیشفرض شیت فعال ما را بعنوان شیت مرجع در نظر می گیرد .

اما فرض کنید که در شیت ۱ مشغول به کار هستیم اما می خواهیم محدوده ای از سلول ها را که در شیت ۲ قرار دارند را مدیریت کنیم آنگاه باید کد خود را بصورت زیر در آوریم .

در اینجا ما از مجموعه Worksheets شی sheet 2  را فراخوانی می کنیم .

سپس با دسترسی به محدوده مورد نظر می توانیم تغییرات مورد نظر خود را اعمال کنیم .

حالا بیایید حالت سومی را در نظر بگیریم .

آن هم به این صورت که فرض کنید ما در یک فایل اکسل مشغول به کار هستیم اما می خواهیم تغییراتی را در یکی از شیتهای موجود در یک فایل اکسل دیگر که همزمان باز است را اعمال کنیم .

Object یا شی در اکسل

بنابراین در این حالت کد خود را باید بصورت زیر بنویسیم .

ما در اینجا از مجموعه ورک بوکها ورک بوک ۲ را فراخوانی نموده سپس به سراغ شیت کاری دوم آن می رویم و سپس به  محدوده مورد نظر خود دسترسی پیدا  می کنیم .

فقط در اینجا به نکته ای که باید حتما توجه کرد این است که حتما فایل با نام book 2 در حال حاضر باز باشد در غیر اینصورت با اجرای این کد یک پیغام خطا برای شما نمایش داده می شود . 

 

ما این مطلب را به تدریج تکمیل می کنیم ……………… بنابراین باز هم به ما سر بزنید . ………

Object یا شی در اکسل

برنامه نویسی VBA بازدید : 191 views 25 فوریه, 2020 ۰