آشنایی کامل با مفهوم Object در برنامه نویسی VBA
Object یا شی در اکسل یک از آن مفاهیم پرکاربردی است که در دنیای برنامه نویسی شی گرا به دفعات با آن مواجه خواهید شد .
اساس و پایه تمام برنامه های مبتنی بر شی گرایی اشیا هستند .
بنابراین خیلی مهم است که بتوانید درک مهمی از این واژه داشته باشید تا بتوانید در دنیای برنامه نویسی به پیشرفت های خوبی برسید .
شما باید به راحتی اشیا تحت کنترل یک برنامه را بشناسید با خصوصیات و ویژیگی های انها آشنا باشید تا بتوانید آنها را مدیریت کنید .
حتی در سطوح بالاتر زبانهای برنامه نویسی این امکان را برای شما فراهم می آورند که بتوانید اشیای مورد نیاز خود را طراحی و ایجاد کنید .
در خصوص نحوه ایجاد اشیا در محیط کلاس ماژول در آینده بیشتر با هم صحبت خواهیم کرد .
اما در قدم اول و قبل از اینکه بخواهیم خودمان به ایجاد اشیا در محیط اکسل بپردازیم لازم است که با همین اشیای موجود در اکسل آشنا شویم و بدانیم که در کجاها و چگونه می توانیم از این اشیا در محیط برنامه نویسی خود استفاده کنیم .
برنامه نویسی در محیط نرم افزارهای اکسل و اکسس تا حد بسیار زیادی از مفهوم شی گرایی پشتیبانی می کند .
بنابراین امروز می خواهیم به بررسی دقیق مفهوم شی در برنامه نویسی VBA در محیط نر م افزار اکسل بپردازیم .
کار کردن با اشیا در محیط این زبان برنامه نویسی به هیچ عنوان سخت و مشکل نیست بلکه اشیا برای این بوجود آمده اند که کار برنامه نویسی را برای ما تا حد زیادی ساده کنند .
پس با من تا انتهای این آموزش همرا باشید .
Object یا شی در اکسل و برنامه نویسی VBA
اول باید با خود کلمه شی یا همان چیزی کهدر برنامه نویسی تحت عنوان object می شناسیم آشنا شویم .
و بدانیم که منظور ما از شی چیست ؟
برای اینکه ما با مفهوم شی بهتر آشنا شویم اجازه بدهید کمی به عقب برگردیم و با هم مفهوم متغیر را با هم بررسی کنیم .
البته ما در گذشته و درهمین سایت در مطلبی با عنوان آشنایی با مفهوم متغیر در زبان برنامه نویسی VBA بطور مفصل در خصوص این مفهوم با هم صحبت کردیم .
اما در اینجا و از باب مرور و یادآوری مطالب گذشته می گوییم که ما در زبان برنامه نویسی VBA متغیرهای متعددی داریم .
هدف اصلی یک متغیر این است که اطلاعات مد نظر ما را در خود ذخیره نماید .
در مورد اشیا هم قضیه به همین صورت است .
یعنی اشیا هم ساختارهایی هستند که در صورت نیاز و صلاحدید ما می توانند اطلاعاتی را در خود ذخیره کنند .
برخلاف متغیرها که فقط می توانستند اطلاعات را در خود ذخیره کنند اشیا کاربردهای متنوعی می توانند داشته باشند که یکی از این کاربردها ذخیره و نگهداری اطلاعات است .
مفهوم مجموعه یا Collection
وقتی که ما در برنامه نویسی VBA در مورد اشیا صحبت می کنیم نمی توانیم اشاره ای به مفهوم مجموعه ها نکنیم .
مجموعه ها هم یکی از مفاهیم کاربردی در زبان برنامه نویسی VBA هستند .
بطور خلاصه به مجموعه چند شی که با هم در یک گروه قرار می گیرند در اصطلاح مجموعه می گویند .
بعنوان مثال ما وقتی در دنیای پیرامون خود اشاره به مجموعه پرندگان می کنیم به خوبی می دانیم که اشاره به چند پرنده می کنیم و یا مجموعه خودروها اشاره به چند خودرو دارد .
در برنامه نویسی VBA هم به همین شکل است .
وقتی که ما صحبت از مجموعه ورک شیتها می کنیم منظورمان ورک شیتهای موجود در اکسل است .
یا وقتی اشاره به مجموعه کامنتها می کنیم منظورمان تمامی کامنتهای موجود در اکسل است .
اکسل این این امکان را می دهد که اعضای یک مجموعه را حذف کنیم یا عضو جدیدی به یک مجموعه اضافه کنیم .
به هر کدام از اعضای یک مجموعه در اصطلاح شی می گوییم .
چرا VBA از اشیا استفاده می کند ؟
VBA یک زبان برنامه نویسی شی گراست .
هدف یک زبان برنامه نویسی شی گرا ، شبیه سازی تمامی دنیای پیرامون ما در قالب اشیا می باشد .
زبان برنامه نویسی VBA با دنیای بزرگی از اشیای موجود در نرم افزار اکسل سر و کار دارد .
شی گرایی این امکان را به ما می دهد که کارهای مورد نظر خود را در اکسل انجام دهیم بدون اینکه بدانیم چگونه این کار انجام می شود و اصلا نیازی هم به این دانستن نداریم .
از طرفی دیگر شی گرایی باعث می شود که ما کارهای خاصی را بر روی اشیای خاصی انجام دهیم بدون اینکه سایر اشیا تحت تاثیر این کارها قرار گیرند .
بنابراین بیایید کمی بیشتر با این مفهوم کاربردی آشنا شویم .
خصوصیات اشیا در دنیای برنامه نویسی VBA .
در زبان برنامه نویسی VBA یک شی دارای ۳ خصوصیت است :
۱- تمامی اشیا در این زبان برای خود دارای یک سری از ویژگی ها هستند .
مثلا یک سلول اکسل را در نظر بگیرید .
این سلول برای خود دارای طول ، عرض ، رنگ زمینه و کادری مشخص است .
اینها ویژگی هایی هستند که توسط ما قابل تغییرند .
یعنی ما می توانیم اندازه یک سلول را تغییر دهیم یا رنگ زمینه آن را از رنگی به رنگ دیگر در آوریم .
به این ویژگی ها در دنیای VBA اصطلاحا Property می گوییم .
۲- خصوصیت دیگر رویدادها هستند .
رویدادها در واقع نیرو یا رخدادی است که بر روی یک شی اعمال می شود .
مثلا وقتی شما در محیط اکسل بر روی یک سلول خاص کلیک راست می کنید در واقع یک رخداد برای آن سلول اتفاق می افتد .
در زبان برنامه نویسی تعداد معینی رویداد وجود دارند که می توانند بوقوع بپیوندند که تمامی این رویدادها از قبل تعریف شده و مشخص هستند .
رویدادهای مثل on click – on dblclick – on keypress -on timer چند نمونه از این رویدادها هستند .
فقط کار شما بعنوان برنامه نویسی این است که تعیین کنید که در صورت وقوع هر کدام از این رویداد ها برنامه شما چه عکس العملی از خود نشان دهد .
۳- خاصیت دیگر مربوط به یک شی متدها هستند .
متدها همان کارهایی هستند که اشیا می توانند برای ما انجام دهند .
برخی از این کارها از قبل برای اشیا تعریف شده اند اما بسیاری از کارها را ما خودمان می توانیم برای اشیا تعریف کنیم .
خوب با در نظر گرفتن مطالب بالا وارد مرحله عملی و اجرایی در خصوص کار با اشیا در محیط اکسل می کنیم .
فقط بعنوان خلاصه مطالب بالا این دو جمله را در ذهن خود حک کنید که :
- هر آنچه که در داخل نرم افزار اکسل مشاهده می کنید برای زبان برنامه نویسی VBA در حکم یک شی است .
یک سلول – مجموعه ای از چند سلول – یک یا چند شیت کاری – یک یا چند کامنت – مجموعه فونت هایی که در اکسل وجود دارند همه و همه در حکم اشیا هستند.
- تمامی اشیا در اکسل دارای سه خصوصیت ویژگی ها ، متدها و رویدادها هستند . کار ما به عنوان یک برنامه نویس این است که اولا به این اشیا دسترسی پیدا کنیم و سپس با استفاده از هر کدام از این سه خصیصه به مدیریت این اشیا بپردازیم .
نحوه دسترسی به اشیا اکسل در محیط برنامه نویسی
اگر بخواهیم اشیایی را که در محیط اکسل هستند را از طریق کد نویسی در محیط VBA مدیریت کنیم باید چند مرحله را طی کنیم .
اولین گام این است که تعیین کنیم که از بین اشیای فراوانی که در اکسل وجود دارند می خواهیم با کدام یک از آنها کار کنیم .
گفتیم که همه اشیا در محیط اکسل دارای سه خصوصیت هستند .
یکی از این سه خصوصیت را تحت عنوان property می شناسیم .
یک شی می تواند به نوبه خود دارای propertyهای متعدد باشد .
مثلا یک خودرو می تواند دارای ویژگی هایی مثل رنگ ، اندازه ، سرعت ، میزان مصرف سوخت ، قیمت و …. باشد .
در کنار همه این ویژگی ها هر خودرویی برای خود دارای یک نام می باشد .
در اکسل هم قضیه دقیقا به همین منوال است .
یک سلول در اکسل دارای ویژگی های مختلفی می باشد که در کنار همه این ویژگی ها این سلول دارای یک نام برای خود می باشد .
حالا ما با ذکر نام این سلول یا سلول ها می توانیم از طریق کد نویسی تغییرات مورد نظر خود را در ویژگی های این سلول اعمال کنیم .
ما در اینجا یک محدوده از سلول ها را معرفی کرده ایم.
گفتیم که اکسل به این محدوده بعنوان یک شی نگاه می کند ..
اگر بعد از ثبت محدوده مورد نظر یک نقطه بگذاریم بلافاصله برنامه به ما یک لیست نمایش می دهد .
حالا از کجا تشخیص دهیم که از بین این همه گزینه کدام یک مربوط به رویداد است کدام یک مربوط به ویژگی شی و یا کدام یک مربوط به متد آن .
برای راهنمایی بیشتر برنامه در کنار هر گزینه یک آیکون برای ما قرار می دهد .
در زیر می توانید این آیکونها به همراه توضیحات آنها را مشاهده کنید .
این لیست در واقع شامل تمامی متدها و ویژگی هایی است که مربوط به شی یا محدوده مورد نظر ما می شود .
حالا کاری که باید بکنیم این است که از بین این لیست آیتم مورد نظر خود را انتخاب کرده و تنظیمات و یا تغییرات مورد نظر را بر روی آن اعمال کنیم .
بعنوان مثال فرض کنید می خواهیم رنگ فونت تمام نوشته های موجود در این سلول ها را را به رنگ سبز در آوریم .
گفتیم که اولین کاری که باید انجام بدهیم این است که به شی مورد نظر خود دسترسی پیدا کنیم .
برای این منظور می توانیم کدی مانند زیر بنویسیم .
("Range("A1:A10
پس ما در اینجا توانستیم به محدوده مورد نظر خود که حکم یک شی را دارد دسترسی پیدا کنیم .
اما ما در اینجا به هیچ کدام از شیت های کاری اشاره ای نکرده ایم .
یعنی نگفتیم که این محدوده از سلول ها در کدام یک از شیت ها قرا دارند .
حالا اگر ما بعنوان مثال ۳ شیت کاری داشته باشیم ولی هیچ نامی از هیچ کدام از این شیتها در ساختار کد خود نبریم برنامه بطور پیشفرض شیت فعال ما را بعنوان شیت مرجع در نظر می گیرد .
اما فرض کنید که در شیت ۱ مشغول به کار هستیم اما می خواهیم محدوده ای از سلول ها را که در شیت ۲ قرار دارند را مدیریت کنیم آنگاه باید کد خود را بصورت زیر در آوریم .
("Worksheets("sheet2").Range("A1:A10
در اینجا ما از مجموعه Worksheets شی sheet 2 را فراخوانی می کنیم .
سپس با دسترسی به محدوده مورد نظر می توانیم تغییرات مورد نظر خود را اعمال کنیم .
حالا بیایید حالت سومی را در نظر بگیریم .
آن هم به این صورت که فرض کنید ما در یک فایل اکسل مشغول به کار هستیم اما می خواهیم تغییراتی را در یکی از شیتهای موجود در یک فایل اکسل دیگر که همزمان باز است را اعمال کنیم .
بنابراین در این حالت کد خود را باید بصورت زیر بنویسیم .
()Sub test ("Workbooks("book2").Worksheets("sheet2").Range("A1:A10 End Sub
ما در اینجا از مجموعه ورک بوکها ورک بوک ۲ را فراخوانی نموده سپس به سراغ شیت کاری دوم آن می رویم و سپس به محدوده مورد نظر خود دسترسی پیدا می کنیم .
فقط در اینجا به نکته ای که باید حتما توجه کرد این است که حتما فایل با نام book 2 در حال حاضر باز باشد در غیر اینصورت با اجرای این کد یک پیغام خطا برای شما نمایش داده می شود .
ما این مطلب را به تدریج تکمیل می کنیم ……………… بنابراین باز هم به ما سر بزنید . ………
مطالب زیر را حتما مطالعه کنید
ذخیره نمودارها با کدهای VBAبصورت تصویر+راهنمای گام به گام
لیست باکس ها در برنامه نویسی VBA ؛ تمام چیزی که باید بدانید .
۷ اشتباه در کدنویسی VBA که ممکن است شما هم مرتکب شوید ؟
توی این آموزش راجع به اشتباهاتی که ممکن است در برنامه نویسی VBA مرتکب آنها شوید صحبت می کنیم .
با این خطای Runtime Error 1004 در VBA چکار کنیم ؟
در این آموزش راجع به خطایی به اسم Run time error 1004 در برنامه نویسی وی بی ای با هم صحبت می کنیم .
دیدگاهتان را بنویسید