با تشکر از کد خوب شمانوشته اصلی توسط ariyo
این که استاندارد نیست رو کاملا موافقم.
این که استفاده از validation ها نیز خیلی راحت و کاربردیه نیز موافقم.
اما به نظر من validation محدودیت داره! بعضی وقتا نیاز هست که از این روش استفاده کنیم. برای مثال برای شرط های پیچیده.
استاندارد نبودن در استفاده از Shape است نه استفاده از VBA.
اگر به جای یک دایره از یک Border قرمز دور سلول بهره می گرفتیم خیلی راحت تر بود و حجم پردازشی کمتری داشتیم.
اما ابتدا بیایم دلیل استاندارد نبودن رو بگیم.
دلیل اینه که داریم یک شی خارج از اشیاء منظم و پشت سر هم داخل شیت (سلول ها)، برای یک سلول خاص ایجاد می کنیم. این چند ایراد داره:
1- بعد از این که شی ایجاد میشه برای پیدا کردن شی مشکلاتی داریم. زیرا ارتباط بین شی سلول و شی دایره وجود نداره. فقط هر دو عضوی از شی Datasheet می باشند. این کمی کار رو سخت می کنه! که این راه حل هایی داره. یعنی با برنامه نویسی قابل حل است.
2- از نظر مفهومی: اینکه بخواهیم یک شی رو مشخص کنیم و اون رو یک طوری متمایز کنیم داریم از یک شی خارجی کمک می گیریم که این در شی گرایی عیب محسوب میشه! هر شی باید برای بروز مشخصات خودش از مشخصه های (property) خودش استفاده کند. این به تنهایی مشکلی ایجاد نمی کند. اما در هر شی مشخصات زیادی وجود دارد که در ارتباط با یکدیگر می باشند. در داخل یک شی با تغییر یک مشخصه مشخصات دیگری نیز تغییر می کنند. که این وجه قضیه دردسر ساز می باشد.
برای حل مشلکل دوم هم راه حل کدنویسی وجود داره! افزودن کلاس های کمکی
کد بسیار خوبی بود و مفید. اما هنوز مشکلات بالا را دارد.برای اینکه امکان رسم دایره بصورت دلخواه باشه. من کدی آماده کرده ام که شما می توانید با استفاده از اون یک منوی Right-Click داشته باشید و روی هر سلول که کلیک راست کنید و گزینه Draw Shape رو انتخاب کنید، یک بیضی قرمز رنگ روی همان سلول رسم کنه.
علاقه مندی ها (Bookmarks)