استفاده از چکباکس یا مربعی برای تیک زدن، علاوه بر زیباتر کردن صفحات Excel، برای برنامهنویسی و انجام خودکار فرآیندها نیز کاربرد دارد. در این مقاله میخواهیم به این سوال پاسخ دهیم که چگونه میتوان کاری کرد که با تیک زدن در یکی از چند چکباکس، سایر موارد خاموش و غیرفعال شود و در واقع همواره فقط یکی از چکباکسها قابلیت تیک زدن داشته باشد.
با ما باشید تا یکی دیگر از ترفندهای کاربردی نرمافزار اکسل مجموعهی آفیس مایکروسافت را بررسی کنیم.
ایجاد چکباکس در صفحات اکسل
فرض کنید در یک فایل اکسل، یک Sheet یا صفحه ایجاد کردهاید و میخواهید در یک ردیف از آن، چند چکباکس قرار بگیرد تا کاربر یکی از موارد را تیک بزند و کاری به صورت خودکار در آن صفحه انجام شود. از طرفی نباید چند چکباکس به صورت همزمان انتخاب شود. به عبارت دیگر اگر یکی از تیکها زده شود، سایر گزینهها مثل تصویر زیر خاموش و غیرفعال میشود.
برای انجام این مهم، نیاز به اسکریپت سادهای دارید که در ادامه میخواهیم به آن بپردازیم. قبل از هر چیز، برای قرار دادن تیکها و همینطور برای نوشتن اسکریپت به زبان VBA، میبایست نمایش تب Developer را از طریق Excel Options فعال کنید.
قبلاً به روش ایجاد چکباکس در سلولهای اکسل نیز پرداختیم:
برای قرار دادن چکباکس، روی Insert در تب Developer کلیک کنید و از بخش ActiveX Controls چکباکس را انتخاب کنید. تغییر موقعیت چکباکسها و کپی کردن و تغییر عنوانشان را در مقالات قبلی مورد بررسی قرار دادیم.
محدود کردن انتخاب یکی از چند Checkbox در Excel
برای شروع برنامهنویسی، کلید میانبر Alt + F11 را فشار دهید تا پنجرهی Microsoft Visual Basic for Applications نمایش داده شود.
حال در سمت چپ و در ستون کنار صفحه، روی Sheet1 یا هر شیت دیگری که چکباکسها در آن قرار گرفته، کلیک کنید. سپس از منوی Insert گزینهی Class Module را انتخاب کنید.
در پنل Properties که در ستون سمت چپ نمایش داده میشود، روبروی Name عبارت ClsChk را تایپ کنید. در سمت راست نیز کدهایی که در ادامه ذکر شده را کپی کرده و پیست کنید.
و کدی که برای این کلاس لازم است:
گام بعدی این است که روی منوی Insert کلیک کرده و گزینهی Module را انتخاب کنید. در ادامه کدهای زیر را در پنجرهی Module پیست کنید:
به این ترتیب دو پنجرهی ماژول و کلاس ClsChk در سمت راست خواهید داشت:
و حال روی دکمهی اجرا به شکل آیکون Play کلیک کنید یا از شورتکات F5 برای اجرا کردن اسکریپت استفاده کنید. اکنون پنجرهی برنامهنویسی به زبان ویژوآل بیسیک را ببندید و به صفحهی اکسل برگردید.
حال اگر روی یکی از چکباکسها کلیک کنید، تیک آن اضافه میشود و چکباکسهای دیگر غیرفعال یا خاکستری شده و تیک آنها حذف میشود. لذا برای تغییر دادن گزینهی انتخابی باید ابتدا روی چکباکس تیکزدهشده کلیک کرد تا تیک آن حذف شود و سپس روی گزینهی دیگری کلیک کرد.
توجه کنید که این اسکریپت در صورت اضافه شدن چکباکسهای جدید در یک صفحهی اکسل، میبایست از نو اجرا شود. به عبارت دیگر میبایست Alt + F11 را فشار دهید و روی دکمهی توقف اجرا و سپس دکمهی اجرا کلیک کنید تا عناصر اضافه شده نیز به گروه چکباکسها اضافه شوند. در مورد حذف کردن برخی از چکباکسها هم وضعیت مشابه است و میبایست اسکریپت از نو اجرا شود.
محدود کردن انتخاب یکی از چند چکباکس خاص در اکسل
روش سادهتر برای حالتی که میخواهید با تیک زدن در یک چکباکس خاص، تیک چند چکباکس خاص دیگر حذف شود، تعریف کردن تابعی است که با کلیک روی چکباکسها اجرا میشود. با این روش میتوانید مشخص کنید که به عنوان مثال اگر چکباکس شماره ۱ تیک خورده باشد و به عبارت دیگر مقدار آن True باشد، مقدار کدام چکباکسها در صفحهی اکسل میبایست به False تغییر کند. به عبارت دیگر محدودیتها کاملاً سفارشی و دلخواه اعمال میشود.
این روش را نیز با یک مثال ساده توضیح میدهیم:
فرض کنید ۴ چکباکس ساده در اکسل ایجاد کردهاید و قرار است یکی از چکباکس شماره ۱ یا ۲ تیک زده شود و در این صورت تیک سایر گزینهها حذف شود اما اگر تیک چکباکس ۳ یا ۴ یا هر دو زده شود، اتفاق خاصی در مورد چکباکس ۱ و ۲ نمیافتد.
و اما راهکاری برای حل کردن این مسأله به صورت ساده:
برای این مهم ابتدا ۴ چکباکس را با استفاده از گزینهی Insert تب Developer در صفحه اضافه کنید و سپس روی Design Mode کلیک کنید تا حالت طراحی فعال شود. در این حالت میتوانید روی هر یک از چکباکسها کلیک کرده و موقعیت و ابعاد چکباکسها را تنظیم کنید.
برای تغییر دادن نام گزینهها میبایست از منوی راستکلیک روی چکباکسها گزینهی Properties را انتخاب کنید تا جدول مشخصات نمایش داده شود. اولین سطر از جدول، به نام چکباکس مربوط میشود.
حال روی یکی از چکباکسها راستکلیک کنید و گزینهی View Code را انتخاب کنید تا پنجرهی ویژوآل بیسیک نمایان شود. در این پنجره، دستورات زیر را پیست کنید:
و اما توضیحات بیشتر در مورد کد فوق: در این اسکریپت ساده، در خط اول مشخص شده که زمانی که روی چکباکس شماره ۱ کلیک صورت میگیرد، چه دستوری اجرا شود. دستور اجرا شده یک دستور شرطی با If است که مقدار چکباکس شماره ۱ را بررسی میکند و اگر مقدار True بود، مقدار چکباکس ۲ و ۳ و ۴ به False تغییر خواهد کرد. به عبارت دیگر تیک ۳ چکباکس دیگر حذف میشود.
به همین ترتیب با کلیک روی دومین چکباکس نیز تیک چکباکس شماره ۱ و ۳ و ۴ حذف خواهد شد و در واقع میتوانید مشخص کنید که تیک کدام چکباکسها میبایست حذف شود.
سیارهی آیتی