تابع Msgbox یا کادر پیام در ویژوال بیسیک

به صورت خلاصه میتوان اینگونه بیان کرد که تابع Msgbox در ویژوال بیسیک اکسل برای دادن یک پیام به کاربر مورد استفاده قرار میگیرد (نمایش یک کادر پیام برای کاربر)، گاهی برنامه نویسان احتیاج دارند اطلاعاتی در اختیار کاربران قرار دهند و یا پرسشی برای ادامه روند برنامه از کاربر بپرسند کادرهای پیام در ماکرونویسی اکسل میتوانند دارای چند دکمه باشند که به کاربر قدرت تصمیم گیری داده شود و بنا به تصمیم گرفته شده مسیر ادامه ی برنامه مشخص شود.

در شکل زیر قسمت های مختلف یک کادر پیام در ماکرو نویسی اکسل نشان داده شده است، تمام قسمت ها قابل ویرایش هستند که در همین مقاله تک به تک مورد بررسی قرار خواهند گرفت:

کادر پیام در ویژوال بیسیک

ساختار کادر پیام در ویژوال بیسیک

فرمت یا Syntax استفاده از تابع Msgbox یا کادر پیام در ویژوال بیسیک اکسل به صورت زیر است:

در تابع بالا، تنها آرگومان Prompt یک آرگومان اجباری است و مابقی آرگومان ها بنا به نیاز برنامه نویس مورد استفاده قرار میگیرند. (در توابع ویژوال بیسیک و همچنین در اکسل برای نشان دادن آرگومان های غیر اجباری از [ ***] استفاده میشود)

تابع MsgBox در ویژوال بیسیک

  • دو آرگومان آخر به یکدیگر وابسته هستند، یعنی در صورتی که آرگومان Helpfile را استفاده کنید باید آرگومان Context هم مورد استفاده قرار گیرد، آرگومان Helpfile به منظور مشخص کردن یک فایل Help برای پیام است.
  • آرگومان Context که به همراه آرگومان Helpfile استفاده میشود، یک عدد است که توسط نویسنده فایل Help به عنوان نشان دهنده متن Help مورد نظر در فایل Help میباشد و در واقع نوعی آدرس دادن است.

کادر پیام در ماکرو نویسی در ویژوال بیسیک

شکل زیر آرگومان های مختلف تابع MsgBox در ویژوال بیسیک را نشان میدهد، در ادامه به بررسی هر آرگومان به صورت جداگانه میپردازیم:

آرگومان کادر پیام در ویژوال بیسیک

متن کادر پیام در ویژوال بیسیک

آرگومان Prompt یک عبارت از نوع رشته میباشد، میتواند نام یک متغیر باشد، میتواند جمله ای متشکل از از یک سری رشته و نام چند متغیر باشد، Prompt در واقع پیامی است که در Massage Box برای کاربر نمایش داده میشود. تعداد کاراکتر آن حداکثر ۱۰۲۴ میتواند باشد و حتی میتوان به کاربر پیامی در چند خط نشان داد.

دکمه ها و نوع کادر پیام در ویژوال بیسیک

آرگومان Buttons در تابع Msgbox ویژوال بیسیک، یک عدد است، این عدد برای تابع مشخص میکند که برنامه نویس به چه تعداد دکمه (Button) و به چه دکمه هایی بر بروی کادر پیام احتیاج دارد. همچنین از طریق این عدد، ویژوال بیسیک نوع کادر را مشخص میکند و حتی میتوان تعیین کرد که به صورت پیشفرض کدام دکمه در حالت انتخاب وجود داشته باشد.

الف: تعیین دکمه های کادر پیام در ویژوال بیسیک

کادر پیام در ویژوال بیسیک میتواند ترکیب دکمه های زیر را داشته باشد و برنامه نویس بین موارد زیر میتواند در مورد تعداد و ترکیب دکمه های کادر پیام خود تصمیم بگیرد. هر ترکیب به صورت یک Constant در ویژوال بیسیک تعریف شده و عدد مختص خود را دارد، جدول زیر فهرست ترکیب دکمه های قابل استفاده در کادر پیام ویژوال بیسیک را نشان میدهد.

پیش از مطالعه این مقاله نگاهی به مقاله ی ثابت ها در ویژوال بیسیک بیندازید تا با مفهوم ثابت ها (Constants) آشنا شوید.

دکمه های کادر پیام در ماکرو نویسی در اکسل

به جای آرگومان Button در تابع MsgBox هر یک از اعدا بالا را میتوان نوشت، مثلاً اگر بخواهید کادر پیامی داشته باشید که بر روی آن سه دکمه ی Yes، No و Cancel وجود داشته باشد، عدد ۳ را به جای این آرگومان بنویسید، تنها استثناء دکمه ی Help است، برای اینکه دکمه ی Help به دکمه های دلخواه شما اضافه شود باید عدد ۱۶۳۸۴ را بعلاوه ی عدد ترکیب دلخواه نمایید، مثلاً اگر کادری با سه دکمه ی Yes، No و Cancel و دکمه ی Help بخواهید باید عدد ۱۶۳۸۷ را بجای آرگومان Button قرار دهید.

ب: تعیین نوع کادر پیام در ویژوال بیسیک

کادر پیام در ویژوال بیسیک میتواند انواع مختلف داشته باشد، اگر شما بخواهید بوسیله ی کادر پیام در ویژوال بیسیک، نکته ای را به کاربر یادآوری کنید و یا پیغامی مبنی بر پایان عملیات و یا پیام مشابه به کاربر بدهید کادر پیام شما می تواند از نوع Information باشد، یا اگر میخواهید اخطاری جدی به کاربر بدهید میتوانید از کادر مناسب برای Critical Massage استفاده کنید، برای پرسیدن سوال از کاربر میتوانید از کادری که آیکون Warning Query دارد استفاده نماید و در نهایت کادری با آیکون Warning Massage میتواند برای اخطار دادن به کاربر استفاده شود.

پیش از مطالعه این مقاله نگاهی به مقاله ی ثابت ها در ویژوال بیسیک بیندازید تا با مفهوم ثابت ها (Constants) آشنا شوید.

شکل زیر Constant های مربوط به تعیین نوع کادر پیام در ویژوال بیسیک را به همراه آیکون هریک از آنها نمایش میدهد:

نوع کادر پیام در ویژوال بیسیک

حال، مثلاً اگر کادری با سه دکمه ی Yes، No و Cancel و دکمه ی Help بخواهید که کادر آیکون Information هم داشته باشد باید عدد ۱۶۳۸۴+۳+۶۴ یعنی عدد ۱۶۴۵۱ را بجای آرگومان Button قرار دهید. البته میتوانید عبارت ۱۶۳۸۴+۳+۶۴ را نیز بنویسید، نتیجه یکسان خواهد بود.

اگر عددی که نوشته میشود برای ویژوال بیسیک بی معنی باشد و یا اگر عددی نوشته نشود مقدار صفر در نظر گرفته میشود یعنی تنها یک دکمه ی OK بر روی کادر پیام در ویژوال بیسیک درج میشود.

کادر پیام در ویژوال بیسیک

ج: تعیین دکمه ی پیشفرض برای کادر پیام در ویژوال بیسیک

در کادرهای پیامی که همواره در محیط ویندور مشاهده میکنید همیشه یک انتخاب پیشفرض وجود دارد که با فشردن کلید Enter انتخاب میشود، در کادرهای پیام ویژوال بیسیک نهایتاً چهار دکمه وجود دارد که برنامه نویس تصمیم میگیرد کدام دکمه انتخاب پیشفرض ویژوال بیسیک باشد، شمارش دکمه ها از سمت چپ به راست میباشد. جدول زیر فهرست Constant های مربوط به این انتخاب را نمایش میدهد:

پیش از مطالعه این مقاله نگاهی به مقاله ی ثابت ها در ویژوال بیسیک بیندازید تا با مفهوم ثابت ها (Constants) آشنا شوید.

دکمه ی پیشفرض کادر پیام در ویژوال بیسیک

حال، مثلاً اگر کادری با سه دکمه ی Yes، No و Cancel و دکمه ی Help بخواهید که کادر آیکون Information هم داشته باشد و دکمه ی دوم از سمت چپ دکمه ی پیشفرض باشد، باید عدد ۱۶۳۸۴+۳+۶۴+۲۵۶ یعنی عدد ۱۶۷۰۷ را بجای آرگومان Button قرار دهید. البته میتوانید عبارت ۱۶۳۸۴+۳+۶۴+۲۵۶ را نیز بنویسید، نتیجه یکسان خواهد بود.

کادر پیام در ویژوال بیسیک

د: تنظیمات دیگر کادر پیام در ویژوال بیسیک

علاوه بر موارد فوق دیگر آیتم هایی نیز وجود دارد که برنامه نویسان میتوانند در کادرهای پیام خود هنگام ماکرو نویسی در اکسل لحاظ کنند، به صورت پیشفرض Application اکسل (فایل اکسل حاوی ماکرو) که کدهای ویژوال بیسیک را در بر دارند، هنگام نمایش کادر پیام، انجام تمام کارها را متوقف نموده و منتظر تصمیم کاربر در مورد کادر پیام میشود (vbApplicationModal)، میتوانید کادر پیام را طوری تنظیم کنید که بعد از نمایش آن تمام Application های باز بر روی سیستم Suspend بشوند و منتظر تصمیم کاربر در مورد کادر پیام بمانند (vbSystemModal).

برای پیام های فارسی بهتر است چینش متن از راست به چپ باشد (vbMsgBoxRtlReading) و اینکه متن نمایش داده شده راست چین باشد (vbMsgBoxRight). جدول زیر فهرستی از تنظیمات دیگر کادر پیام در ویژوال بیسیک را نمایش میدهد.

پیش از مطالعه این مقاله نگاهی به مقاله ی ثابت ها در ویژوال بیسیک بیندازید تا با مفهوم ثابت ها (Constants) آشنا شوید.

تنظیمات کادر پیام در ماکرونویسی در اکسل

حال، مثلاً اگر کادری با سه دکمه ی Yes، No و Cancel و دکمه ی Help بخواهید که کادر آیکون Information هم داشته باشد و دکمه ی دوم از سمت چپ دکمه ی پیشفرض باشد، همینطور بخواهید متن کادر راست چین باشد و از راست به چپ نوشته شود (برای متن های فارسی این گزینه مناسب است) باید عدد ۱۶۳۸۴+۳+۶۴+۲۵۶+۵۲۴۲۸۸+۱۰۴۸۵۷۶ یعنی عدد ۱۵۸۹۵۷۱ را بجای آرگومان Button قرار دهید. البته میتوانید عبارت ۱۶۳۸۴+۳+۶۴+۲۵۶+۵۲۴۲۸۸+۱۰۴۸۵۷۶ را نیز بنویسید، نتیجه یکسان خواهد بود.

عنوان کادر پیام در ویژوال بیسیک

آرگومان Title عنوان کادر پیام در ویژوال بیسیک را مشخص میکند و یک عبارت رشته ای میباشد، به صورت پیش فرض، ویژوال بیسیک نام Application (Microsoft Excel) را برای عنوان کادر Dialog Box انتخاب مینماید.

کادر پیام در ویژوال بیسیک

مقدار تابع MsgBox در ویژوال بیسیک

تا اینجا با نحوه ی تعریف تابع MsgBox و در واقع ایجاد کادر پیام در ویژوال بیسیک آشنا شدیم، گفتیم با توجه به تصمیمی که کاربر در مورد کادر پیام میگیرند میتوان روند برنامه را تغییر داد، در مقاله ی استفاده از کادرپیام در ماکرونویسی به شرح روش استفاده از کادر پیام در ویژوال بیسیک خواهیم پرداخت.

اشتراک گذاری در شبکه های اجتماعی: share on facebook share on google plus share on linkedin

۸ نظر

  1. سید حسین زینتی

    با سلام
    در متن اشاره شد که می توان قسمت promot را در چند سطر نوشت!
    اما چگونه؟ اگر توضیح دهید ممنون می شوم.

    1. حامد قدیمی

      سلام، میتوانید برای اتصال رشته های متنی از کلمه کلیدی VBNewline استفاده نمایید. یا از تابع (CHAR(10 استفاده کنید. موفق باشید.

  2. جاهد

    با سلام و تشکر به خاطر آموزشهای دقیقتان
    بنده می خواهم در فایل اکسل برای برخی از cellها توضیحی به صورت لینک قرار دهم، به طوری که با کلیک بر آن متن پیام در یک پنجره کوچک نمایش داده شود(مثل popup massage) ، و در فرمت ذخیره شده به صورت web page هم نمایش داده شود. برای این مسئله راه حلی دارید؟

    1. حامد قدیمی

      سلام، باید از متد های Application استفاده نمایید. لطفاً فهرست این متد ها را در Object Browser بررسی کنید. لطفاً در همینجا متد استفاده شده را معرفی نمایید. متشکرمف موفق باشید.

      1. جاهد

        با تشکر از شما
        بنده تاکنون در محیط VB کار نکرده ام و متوجه راهنمائیتان نشدم.
        البته مسیری را که فرمودید دیدم؛ اما نمی دانم چگونه باید روی یک سل آن را اعمال کنم.
        اگر امکان دارد دراین مورد راهنمائی بیشتری بفرمایید.

        1. حامد قدیمی

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

    1. حامد قدیمی

      سلام، میتوانید متن را به عنوان یک متغیر رشته ای استخراج نمایید. یعنی متن Text Box شما در یک متغیر رشته ای ریخته شود و سپس آن را در Msgbox استفاده نمایید. موفق باشید.

دیدگاهتان را بنویسید؟