تابع Msgbox و تعامل با کاربر
تابع Msgbox در VBA و نمایش پیغام به کاربر
در هنگام ساخت برنامه با استفاده از VBA و در بسیاری از موارد نیاز هست که اطلاعت خاصی به کاربر نمایش داده شود. برای نمایش اطلاعات به کاربر روش های مختلفی تعریف شده که یکی از این روش ها استفاده از تابع Msgbox هست. با اجرای دستور کد Msgbox یک پنجره به کاربر نمایش داده میشه که حاوی متنی هست که تعیین کردیم. در VBA امکان شخصی سازی این پنجره تا حدودی میسر شده که در این آموزش در این مورد و نحوه استفاده از تابع Msgbox صحبت میکنیم.
ساختار تابع MsgBox به صورت زیر هست:
MsgBox( Prompt, [Buttons], [Title], [HelpFile], [Context] )
شرح این آرگومان ها رو در جدول زیر ببینید:
Prompt: متنی که قرار است به کاربر به عنوان پیغام نمایش داده بشه.
[Buttons]: آرگومان اختیاری که به واسطه مقادیری که در آن قرار داده میشه، نوع پنجره نمایش داده شده و دکمه های آن تعیین خواهد شد. برخی از مقادیری که در این آرگومان میتونید وارد کنید از این قراره:
مقدار | دکمه های نمایش داده شده |
vbOKOnly | نمایش دکمه OK |
vbOKCancel | نمایش دکمه OK و Cancel |
vbAbortRetryIgnore | نمایش سه دکمه Abort،Retry و Ignore |
vbYesNoCancel | نمایش دکمه های Yes، No و Cancel |
vbYesNo | نمایش دکمه های Yes و No |
vbRetryCancel | نمایش دکمه های Retry و Cancel |
vbMsgBoxRtlReading | تعیین نوشته های پنجره به صورت راست به چپ برای زبان های فارسی و … |
vbMsgBoxRight | قرار دادن متن پیغام در سمت راست |
vbExclamation | نمایش آیکون اخطار در پیغام |
vbInformation | نمایش علامت تعجب در پیغام |
vbQuestion | نمایش آیکون علامت سوال در پیغام |
vbCritical | نمایش آیکون ضربدر در پیغام |
اگر مقدار این آرگومان خالی بماند، حالت پیشفرض برای پیغام نمایش داده شده به صورت vbOKOnly در نظر گرفته خواهد شد.
در این آرگومان امکان تعیین چند حالت با هم وجود داره و کافیه برای این کار گزینه های مختلف با علامت + از هم جدا بشن.
[Ttile]: متنی اختیاری جهت نمایش عنوان در پنجره نمایش داده شده استفاده میشه.
[HelpFile]: متن اختیاری جهت مشخص کردن فایل راهنمای مربوط به این پنجره هست. توجه کنید که اگه این قسمت مقداردهی شده باشه، مقدار آرگومان [Context] هم باید مقداردهی شده باشه.
[Context]: یک عدد اختیاری جهت تعیین عنوان مورد نظر در فایل راهنمای مشخص شده در بخش [HelpFile] هست.
با مقدار دهی آرگومان های مختلف این تابع و قرار دادن این دستور در یک Sub میتونید اون رو اجرا و نتیجه (در شکل 1 نمایش داده شده) رو ببینید:
1 2 3 |
Sub Show_Massage() MsgBox "من سامان چراغی هستم", vbOKOnly + vbInformation, "اکسل پدیا" End Sub |
شکل 1- پنجره نمایش داده شده توسط کد Msgbox
در این کد، دو حالت در vbOKOnly و vbInformation همزمان انتخاب شده که با علامت + از هم جدا شده و در آرگومان دوم تابع قرار داده شده.
خروجی تابع Msgbox
بعد از نمایش پیغام به کاربر، کاربر باید یک گزینه رو انتخاب کنه. بعد از انتخاب گزینه توسط کاربر، مقدار تعریف شده متناظر با دکمه انتخاب شده برگردانده میشه. پس باید بدونیم مقدار تعریف شده متناظر با هر دکمه چی هست. در جدول زیر این مقادیر رو میبینید:
دکمه انتخاب شده | عدد متناظر | عبارت متناظر |
دکمه OK | 1 | vbOK |
دکمه Cancel | 2 | vbCancel |
دکمه Abort | 3 | vbAbort |
دکمه Retry | 4 | vbRetry |
دکمه Ignore | 5 | vbIgnore |
دکمه Yes | 6 | vbYes |
دکمه No | 7 | vbNo |
در حالت معمول بعد از فشردن هر کدوم از این دکمه هیچ اتفاق خاصی نمیفته و شما به عنوان توسعه دهنده اکسل باید با استفاده از دستورهای شرطی و بررسی اینکه کدام دکمه انتخاب شده، تعریف کنید که چه اتفاقی بیفته.
مثال: حذف رکورد اطلاعاتی
1 2 3 4 5 6 7 |
Sub Remove_Record IF Msgbox (“آیا مایل به حذف این کاربر هستید؟ با حذف کاربر قادر به بازگردانی آن نخواهید بود”, vbYesNo, “برنامه مدیریت مشتریان”) = vbYes Then ‘کدهای حذف رکورد مشتری Else ‘کدهای مربوط به عدم حذف رکورد مشتری End IF End Sub |
با اجرای این کد پنجره شکل 2 نمایش داده میشه که از کاربر سوالی میپرسه و بر اساس گزینه انتخاب شده ادامه کد اجرا میشه.
شکل 2- بررسی دکمه انتخاب شده در تابع Msgbox
تو این مطلب در مورد تابع Msgbox صحبت کردیم و آرگومان هاش رو بررسی کردیم. حالت های مختلفی رو میشه برای این تابع تعریف کرد و بسته به گزینه انتخابی توسط کاربر، نتایج مرتبط رو نمایش داد.
برچسب:تابع Msgbox, متوسط
4 نظر
با سلام واحترام
علاقه مند به آموزش VBA هستم از کجا شروع کنم و با چه فایل و کتاب آموزشی
مچکرم
درود بر شما
میتونید از این کتاب شروع کنید
یا اینکه این ویدئو رو تهیه کنید و استفاده کنید
خیلی ممنون
ارزش انسان هایی که داشته ها و اطلاعاتشون رو بدون منت به اشتراک میذارن بسیار بالاست و با یک قدر دانی کوچک نمیشه جبران کرد
بسیار لطف کردید
با سپاس
اطلاعات دریافتی بسیار مفید و مناسب است .