چطور به آسانی با select case در VBA کار کنیم؟
سلام به آموزش دیگری از سری آموزش های سافت پلاس خوش آمدید . موضوع آموزش امروز ما در زمینه برنامه نویسی VBA است و مشخصا می خواهیم به موضوع select case در VBA بپردازیم .
خیلی از مواقع در برنامه نویسی باید بین دو یا چند گزینه فقط یکی را انتخاب کنیم و بر مبنای آن برنامه را پیش ببریم .
مثلا از برنامه می خواهیم که اگر نمره یک دانش آموز بیشتر از ۱۰ بود به وی پیغام قبول بودن و اگر کمتر از ۱۰ بود پیغام مردود بودن را نمایش دهد .
برای اینکه برنامه قادر به انجام این کار باشد باید به برنامه قدرت تصمیم گیری بدهیم . برای این کار هم باید از ساختارهای تصمیم استفاده کنیم .
آن چیزی که در برنامه نویسی VBA از آن تحت عنوان ساختار های تصمیم صحبت می کنیم شامل دو دستور می باشد .
دستور اول دستور و ساختار if …….. then ……. else است که با کمک آن می توان یک یا چند شرط را بررسی کرده و متناسب با اینکه کدام شرط برقرار باشد دستورات لازم اجرا خواهد شد .
دستور بعدی select —case است . موضوعی که بطور کامل در مورد آن با همدیگر صحبت خواهیم کرد و از صفر تا صد کار با آن را یاد خواهیم گرفت .
پس از شما دعوت می کنم که تا پایان این آموزش همراه من باشید .
آشنایی با ساختار و دستور select case در VBA
خود اصطلاح select case در لغت به معنای انتخاب موقعیت است .select case ساختاری است که به کمک آن می توانیم به برنامه خود بگوییم که در مواجهه با یک یا چند موقعیت خاص چه کاری انجام دهد .
در خیلی از این مواقع ما می توانیم از ساختار select case به جای دستور If استفاده کنیم . اما برای اینکه بتوانیم با این دستور کار کنیم و از آن استفاده کنیم باید اول با ساختار آن به خوبی آشنا شویم .
پس بیایید با هم این دستور را مورد بررسی قرار دهیم .
برای این کار به تصویر زیر نگاه کنید .
این تصویر ساختار این دستور را به ما نمایش می دهد . در تصویر بالا تمام کلماتی که به رنگ قرمز هستند جزو کلمات کلیدی این دستور حساب می شوند و ما هیچ تغییری در آنها نمی توانیم بدهیم .
هر دستور و ساختار select case از سه بخش کلی تشکیل می شود .
این ساختار با کلمه کلیدی select case شروع می شود و با کلمه کلیدی End select به پایان می رسد . آنچه که در بین این دو عبارت قرار می گیرد در اصطلاح بدنه select case نامیده می شود.
در بالاترین قسمت از این دستور و در جلوی کلمه کلیدی select case عبارت expression درج شده است .
منظور از expression همان آیتمی است که قرار است چند حالت مختلف داشته باشد و برنامه از بین حالت های مختلف آن یک یا چند حالت را انتخاب کند .
مثال هایی برای این گزینه می تواند شامل موارد زیر باشد .
– انتخاب نمرات کسب شده دانش آموزان .
-انتخاب وزن دانش آموزان
-انتخاب قد دانش آموزان
البته این ها تنها مثال هایی ساده بود در ادامه همین مثال های بیشتری را با هم بررسی می کنیم .
بعد از تکمیل خط اول این دستور وارد بدنه آن می شویم . در بدنه این دستور ما تعیین می کنیم که برای هر انتخاب برنامه چه کار یا کارهایی را برای ما انجام دهد .
اما اگر برنامه هیچ کدام از انتخاب هایی را که برایش مشخص کردیم را پیدا نکرد در این صورت وارد بخش Else می شود و دستورات این بخش را برای ما اجرا می کند .
خوب می دانم که این توضیحاتی که اینجا برای شما درج کردم چندان واضح و قابل فهم نبود . چون توضیح دادن این مطالب در قالب تئوری آن هم طوری که برای همه قابل درک باشد کمی سخت است .
برای همین با هم به بررسی مثال هایی می پردازیم و در آنها از دستور select case استفاده کرده وو با بخش های مختلف آن بصورت عملی آشنا می شویم .
مثال عملی از کاربرد دستور select case
در اینجا با هم بصورت عملی به استفاده از دستور select case می پردازیم .اما قبل از آن یک توضیحی راجع به کاری که می خواهیم انجام دهیم بدهم .
ما در پزشکی یک شاخصی داریم به نام شاخص BMI این شاخص برای خودش یک فرمول دارد .فرمول آن هم به صورت زیر است
قد (بر حسب متر)به توان ۲ /وزن( بر حسب کیلو گرم)=BMI
وقتی که این اعداد را در فرمول بالا قرار می دهیم بعد از انجام محاسبه ساده در نهایت این فرمول یک عدد را به ما می دهد . این عدد مبنایی می شود که بگوییم یک فرد کمبود وزن دارد یا اضافه وزن دارد
جالا ما می خواهیم همین محاسبه ساده را در محیط اکسل انجام داده و برای قضاوت نتیجه از دستور select case استفاده کنیم .
برای شروع کار تصویر زیر را در نظر بگیرید .
اینجا من یک سلول دارم که قرار است در آن از کاربر یک عدد مربوط به قد بر حسب متر و در سلول بعدی یک عدد مربوط به وزن بر حسب کیلوگرم را دریافت کنم .
بعد از دریافت این اعداد می خواهم BMI کاربر را حساب کرده و در طی یک کادر پیغام نتیجه را به وی نمایش بدهم که آیا او اضافه وزن دارد یا نه .
خوب برای این کار نیاز به یک دکمه هم دارم که کاربر با کلیک بر روی این دکمه نتیجه را مشاهده می کند . برای قرار دادن دکمه کافی است از سربرگ Developer در داشبورد Controls رفته روی آیکونی به نام insert کلیک کرده و از منوی نمایش داده شده روی گزینه Command button کلیک کنید .
با این کار یک دکمه روی صفحه کاری شما قرا می گیرد .
حالا روی همین دکمه دابل کلیک کنید تا مستقیما وارد محیط کد نویسی برای این دکمه شوید .
در این محیط و برای رویداد On click شروع به کد نویسی می کنیم .
اول ۳ تا متغیر تعریف می کنیم .
()Private Sub CommandButton1_Click Dim uweight As Single Dim ulenght As Single dim result as single End Sub
متغیر اول قرار است برای ما عدد مربوط به وزن را گرفته و در خود ذخیره کند .
متغیر دوم عدد مربوط به قد را گرفته و در خود ذخیره می کند.
متغیر سوم هم نتیجه محاسبات را در خود ذخیره خواهد کرد .
حالا باید به برنامه بگوییم که متغیرهای اول و دوم اعداد مربوط به خود را از کجا بگیرند .
در شیت کاری ما عدد مربوط به وزن در سلولA3 و عدد مربوط به قد در سلول C3 وارد می شود وارد می شود . پس آدرس همین سلولها را به هر کدام از متغیرهای خود معرفی می کنیم .
پس در ادامه کدهای خود را بصورت زیر تکمیل می کنیم.
()Private Sub CommandButton1_Click Dim uweight As Single Dim ulenght As Single ("uweight = Range("A ("ulenght = Range("c3 End Sub
حالا ما دو عدد داریم یکی بر حسب کیلوگرم که مربوط به وزن است و دیگری برحسب متر که مربوط به قد است .
در ادامه از همین اعداد استفاده و محاسبات خود را انجام می دهیم .
قرار است محاسبات ما در متغیر result ذخیره شود .
پس کدهای خود را با اضافه کردن یک خط زیر تکمیل تر می کنیم .
()Private Sub CommandButton1_Click Dim uweight As Single Dim ulenght As Single ("uweight = Range("A3 ("ulenght = Range("c3 (result = uweight / (ulenght ^ 2 End Sub
بعد از انجام همه این مراحل و انجام محاسبات نهایی در نهایت ما یک عدد داریم که بر مبنای این عدد می خواهیم قضاوت کنیم که آیا یک فرد چاق است یا نه ؟
این عدد در کجا ذخیره شده است ؟ در متغیری به نام result .
پس همین متغیر را به عنوان Case مورد نظر خود انتخاب و آن را وارد ساختار select case می کنیم .
حالا به قسمت اصلی ماجرا که همان استفاده از دستور Select case است می رسیم .
پس کدهای خود را اینگونه تکمیل می کنیم که :
Select Case result Case = 20 " وزن شما متناسب است " MsgBox End Select
در اینجا ما یک متغیر داریم به اسم result که در آن یک عدد که مربوط به BMI محاسبه شده برای فرد است ذخیره می شود .
حالا همین عدد را در خط اول مبنای کار دستور select case قرار می دهیم .
در خط دوم از برنامه می خواهیم کنترل کند که آیا کیس مورد نظر یا همان BMI محاسبه شده برابر با عدد ۲۰ است یا نه؟
اگر اینطور بود از برنامه می خواهیم به کاربر یک کادر پیغام نمایش دهد .
در انتها هم عبارت End Select را درج می کنیم .
در اینجا ما خیلی ساده توانستیم اولین دستور select case را برای خودمان ایجاد کنیم .
اما این همه کاری نیست که این دستور برای ما می کند . گزینه ها و امکانات دیگری هم در دل این دستور قرار دارند که متناسب به نیازمان می توانیم از آنها استفاده کنیم .
برویم ببینیم که این امکانات چی هستند .
استفاده از کلمه کلیدی To در ساختار دستور select case
برگردیم به مثال محاسبه BMI خودمان .
در مثال قبلی ما فقط یک عدد را داشتیم که بر اساس آن دستور را اجرا کردیم و کادر پیغام را به کاربر نمایش دادیم . اما همیشه قرار نیست که این عدد ثابت باشد .
از طرفی هم هر فردی یک وزن و قد متفاوت از سایرین دارد بنابراین اینجا خروجی ما یک طیف وسیعی از اعداد را می گیرد .
حالا برای اینکه بتوانیم یک قضاوتی در مورد BMI افراد داشته باشیم چه کاری باید بکنیم .
خود افرادی که با BMI سر و کار دارند برای اینکه بتوانند بهتر عدد بدست آمده را قضاوت کنند یک شاخص دارند . این شاخص در تصویر نمایش داده شده است .
خوب حالا ما هم همین تصویر را مبنای کار خود قرار می دهیم و دستور Select case خود را بر مبنای آن تنظیم می کنیم .
اگر به تصویر بالا دقت کنید هر مرحله یک بازه از اعداد را تعریف شده است . یعنی اگر BMI کسی بین اعداد ۱۶ تا ۱۸٫۵ قرار بگیرد نتیجه می گیریم که این فرد کاهش وزن دارد .
ما برای ایجاد این بازه از اعداد در دستور Select case از عبارت کلیدی To استفاده می کنیم .
به کدهای زیر دقت کنید .
Select Case result Case 16 To 18.5 "شما دچار کمبود وزن هستید " MsgBox Case 18.5 To 24 "وزن شما ایده آل است " MsgBox Case 24 To 30 "شما اضافه وزن دارید " MsgBox Case 30 To 35 "شما دچار چاقی درجه اول هستید " MsgBox Case 35 To 40 "شما دچار چاقی درجه دوم هستید " MsgBox End Select
حالا کدهای ما تکمیل شدند و اینطوری برنامه ما کاملا قدرت تجزیه و تحلیل دارد.
ما به برنامه شاخصی را که بر اساس آن می تواند قضاوت کند را معرفی کردیم و به راحتی می تواند در مورد عدد BMI تجزیه و تحلیل کند
اما اگر باز هم دقت کنید ما در کد بالا آخرین معیار را نیاورده ایم . معیاری که می گوید اگر عدد BMI بیشتر از عدد ۴۰ بود برنامه چه پیغامی را صادر کند .
برای اینکه این معیار را هم به برنامه معرفی کنیم باید از اپراتورهای مقایسه ای استفاده کنیم . در ادامه با من همراه شوید تا این اپراتورها را هم استفاده کنیم .
استفاده از اپراتورهای مقایسه ای در دستور Select Case
عملگردهای مقایسه ای همان علامتهای بزرگتر ، کوچکتر یا مساوی هستند که در ریاضی هم از آنها استفاده می کنیم .
حالا ببینیم که این علامتها اینجا چه کمکی می توانند به ما بکنند .
مثلا اگر بخواهیم قضاوت کنیم که شاخص توده بدنی فردی بیشتر از 40 است می توانیم خط کد زیر را به انتهای کدهای قبلی اضافه کنیم .
Case is > 40
MsgBox " شما دچار چاقی شدید هستید "
عملگرهای مقایسه ای می تواند یکی از علامتهای زیر باشد .
> (بزرگتر از ) , < (کوچکتر از ), <>(نا مساوی با ) , = , >= (بزرگتر یا مساوی با ).<= (کوچکتر یا نامساوی با )
کلمه کلیدی IS در ساختار select case
یکی دیگر از کلماتی که در ساختار دستور select case وارد می شود کلمه IS است. این کلمه کلیدی معمولا وقتی استفاده می شود که شما در ساختار دستور select case از عملگرهای مقایسه ای استفاده می کنید .
نکته جالب در مورد این کلمه کلیدی این است که اگر شما از عملگرهای مقایسه ای استفاده کنید ولی یادتان برود که از این کلمه کلیدی استفاده کنید برنامه ویرایشگر کدها آن را به طور خودکار به کدهای شما اضافه می کند .
برای خیلی ها برنامه نویسی مثل یه غوله شکست ناپذیره
همه انتخاب ها در یک خط
خیلی از وقت ها هست که تعداد انتخاب هایی که برای ما وجود دارند بیشتر از یک یا چند مورد است .
مثلا فرض کن به همه دانش آموزانی که در یک امتحان نمره 18 ، 19 و 20 گرفته اند صفت بسیار عالی و برا ی دانش آموزان با نمره 15 ، 16و 18 صفت عالی را اختصاص دهیم .
خب در این حالت می توانیم دستور select case را به این صورت بنویسیم .
Select Case grade
Case 118, 19, 20
MsgBox "کسب نمره بسیار عالی "
Case 15, 16, 17
MsgBox "کسب نمره عالی "
End Select
اینجا ما در هر خط از کدها 3 تا انتخاب را مد نظر قرار دادیم . حالا هر کدام از این انتخاب ها که وجود داشته باشند آن کار خاص برای هر کدام از آنها اجرا می شود .
اما شاید در نگاه اول با خود بگویید که خوب می شد این قضیه را با استفاده از کلمه TO هم انجام داد.
پس چرا باید از این حالت استفاده کنیم ؟
در جواب باید بگوییم که استفاده از این حالت وقتی برای ما کاربردی است که دو یا چند انتخاب داریم ولی
اگر این انتخاب ها از نوع اعداد هستند اعداد متوالی و پشت سرهم نیستند .
مثلا به مثال زیر دقت کنید .
Select Case grade
Case 2, 4, 6, 8, 10
MsgBox "این عدد زوج است "
Case 1, 3, 5, 7, 9
MsgBox "این عدد فرد است "
End Select
مطالب زیر را حتما مطالعه کنید
ذخیره نمودارها با کدهای VBAبصورت تصویر+راهنمای گام به گام
لیست باکس ها در برنامه نویسی VBA ؛ تمام چیزی که باید بدانید .
۷ اشتباه در کدنویسی VBA که ممکن است شما هم مرتکب شوید ؟
توی این آموزش راجع به اشتباهاتی که ممکن است در برنامه نویسی VBA مرتکب آنها شوید صحبت می کنیم .
با این خطای Runtime Error 1004 در VBA چکار کنیم ؟
در این آموزش راجع به خطایی به اسم Run time error 1004 در برنامه نویسی وی بی ای با هم صحبت می کنیم .
دیدگاهتان را بنویسید