تابع Msgbox و تعامل با کاربر

تابع Msgbox
۴.۷/۵ - (۶ امتیاز)

تابع Msgbox در VBA و نمایش پیغام به کاربر

در هنگام ساخت برنامه با استفاده از VBA و در بسیاری از موارد نیاز هست که اطلاعت خاصی به کاربر نمایش داده شود. برای نمایش اطلاعات به کاربر روش های مختلفی تعریف شده که یکی از این روش ها استفاده از تابع Msgbox هست. با اجرای دستور کد Msgbox یک پنجره به کاربر نمایش داده میشه که حاوی متنی هست که تعیین کردیم. در VBA امکان شخصی سازی این پنجره تا حدودی میسر شده که در این آموزش در این مورد و نحوه استفاده از تابع Msgbox در یک Sub صحبت میکنیم.

ساختار تابع 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 میتونید اون رو اجرا و نتیجه (در شکل ۱ نمایش داده شده) رو ببینید:

Sub Show_Massage()
MsgBox "من سامان چراغی هستم", vbOKOnly + vbInformation, "اکسل پدیا"
End Sub
پنجره نمایش داده شده توسط کد Msgbox

شکل ۱- پنجره نمایش داده شده توسط کد Msgbox

در این کد، دو حالت در vbOKOnly و vbInformation همزمان انتخاب شده که با علامت + از هم جدا شده و در آرگومان دوم تابع قرار داده شده.

خروجی تابع

بعد از نمایش پیغام به کاربر، کاربر باید یک گزینه رو انتخاب کنه. بعد از انتخاب گزینه توسط کاربر، مقدار تعریف شده متناظر با دکمه انتخاب شده برگردانده میشه. پس باید بدونیم مقدار تعریف شده متناظر با هر دکمه چی هست. در جدول زیر این مقادیر رو میبینید:

دکمه انتخاب شدهعدد متناظرعبارت متناظر
دکمه OK1vbOK
دکمه Cancel2vbCancel
دکمه Abort3vbAbort
دکمه Retry4vbRetry
دکمه Ignore5vbIgnore
دکمه Yes6vbYes
دکمه No7vbNo

در حالت معمول بعد از فشردن هر کدوم از این دکمه هیچ اتفاق خاصی نمیفته و شما به عنوان توسعه دهنده اکسل باید با استفاده از دستورهای شرطی و بررسی اینکه کدام دکمه انتخاب شده، تعریف کنید که چه اتفاقی بیفته.

مثال: حذف رکورد اطلاعاتی

Sub Remove_Record
IF Msgbox (“آیا مایل به حذف این کاربر هستید؟ با حذف کاربر قادر به بازگردانی آن نخواهید بود”, vbYesNo, “برنامه مدیریت مشتریان”) = vbYes Then
‘کدهای حذف رکورد مشتری‘
Else
‘کدهای مربوط به عدم حذف رکورد مشتری‘
End IF
End Sub

با اجرای این کد پنجره شکل ۲ نمایش داده میشه که از کاربر سوالی میپرسه و بر اساس گزینه انتخاب شده ادامه کد اجرا میشه.

بررسی دکمه انتخاب شده در تابع Msgbox

شکل ۲- بررسی دکمه انتخاب شده در تابع Msgbox

تو این مطلب در مورد تابع Msgbox صحبت کردیم و آرگومان هاش رو بررسی کردیم. حالت های مختلفی رو میشه برای این تابع تعریف کرد و بسته به گزینه انتخابی توسط کاربر، نتایج مرتبط رو نمایش داد.

در بعضی مواقع لازم هست قبل از نمایش اطلاعات به کاربر، یک سری اطلاعات دریافت کنیم، این کار رو با تابع Inputbox انجام میدیم که در مقاله تابع InputBox ابزاری برای تعامل با کاربر در موردش صحبت کردم.

کلیدواژه : تابع Msgboxمتوسط
134

من سامان چراغی هستم. دانش آموخته مقطع فوق لیسانس دانشگاه تربیت مدرس در رشته مهندسی صنایع. از سال 1388 اکسل و برنامه نویسی VBA رو به صورت حرفه ای شروع کردم.

دیدگاه کاربران
  • ولی الله ۲۰ آذر ۱۴۰۲ / ۱۰:۱۲ ق٫ظ

    سلام و خدا قوت
    من میخوام یک msgbox باز کنم بدون هیچ دکمه ای و فقط یک نمایشگر باشه، مثلا من یه شمارنده رو توی کدهام گذاشتم و قراره این شمارنده رو نمایش بده و خودکار بسته بشه، چنین چیزی هم امکان داره یا خیر؟
    ممنون

    • آواتار
      حسنا خاکزاد ۲۳ آذر ۱۴۰۲ / ۱۰:۳۱ ق٫ظ

      درود بر شما
      از یک یوزرفرم بدون باتن استفاده کنید

      • عبدالباسط ۱۳ اردیبهشت ۱۴۰۳ / ۱۰:۰۵ ب٫ظ

        یه کد وی بی ای اکسل میخوام که وقتی کاربر در هرجای ویندوز کلید کیبورد را میزنه یه مسج باکس برای ظاهر بشه

        • سامان چراغی ۲۱ اردیبهشت ۱۴۰۳ / ۶:۳۴ ب٫ظ

          درود، وقت بخیر
          این کار با اکسل انجام نمیشه، پیشنهاد میکنم از برنامه های ضبط ماکرو تحت ویندوز استفاده کنید.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *