توابع MsgBox و InputBox

از تابع MsgBox برای ارسال يک پيغام به کاربر و يا مطرح نمودن يک پرسش و دريافت جواب مثبت يا منفی او به سؤال مطرح شده و از تابع InputBox برای دريافت يک عبارت از کاربر، استفاده می‌شود.

توابع مذکور را می‌توان مانند دستور نوشت، يعنی نام يکی از آن دو را و با يک فاصله پارامترهای احتمالی آنها را نوشت. همچنين می‌توان آنها را مانند يک Function به VB معرفی کرد. (يعنی اين توابع دارای مقدار بازگشتی باشند) که برای اين منظور بايد پارامترهای آنها را داخل پرانتز نوشت.

پنج پارامتر اول Input Box به ترتيب عبارتند از:

Prompt: که يک عبارت رشته ای را (و يا يک متغير رشته ای (String) را) بجای آن می‌نويسيم که اين عبارت همان پيغامی خواهد بود که در اجرای  InputBox به کاربر نشان داده خواهد شد (مثلاً پيغام اينکه او بايد چه چيزی را وارد کند).

Title: که عنوان InputBox در TitleBar آن خواهد بود (به صورت عبارت رشته‌ای).

Default: که مقدار پيش فرض برای آن چيزی است که کاربر قرار است وارد نمايد.

XPos و YPos: که طول و عرض گوشه بالا و سمت چپ InputBox را در هنگام اجرای آن مشخص می‌کند.

که می توان هريک از آنها را مقداردهی نکرد و در اينصورت مقادير پيش فرض VB برای آنها در نظر گرفته خواهد شد.

به عنوان مثال اگر دستورات:

Dim s As String

s = InputBox (“Please enter your name” , “Title” , “Alireza”)

را در برنامه داشته باشيم در زمان اجرای اين دستورات شکل 12 را مشاهده خواهيم کرد:

شکل 12

مشاهده می کنيد که بطور پيش فرض مقدار “Alireza” در کادر مربوط قرار گرفته است که کاربر می تواند آن را تغيير دهد. در هر حال پس از تأييد اين کادر توسط کاربر، آنچه در کادر مذکور باشد به عنوان نتيجه در متغير رشته ای s ذخيره می شود و می‌توان از آن در ادامه استفاده نمود.

اما سه پارامتر اول MsgBox نيز به قرار زيراند:

Prompt: که پيغامی است که در Message Box زمان اجرا به کاربر نمايش داده خواهد شد.

Button: که می توان دکمه های مورد نظر و علامت موردنظر برای  Message Box را در آن تعيين نمود. برخی از مقادير مهمی که می توان در اين پارامتر قرار داد عبارتند از:

  1. VBOKOnly : کادر مذکور فقط دارای دکمه OK خواهد بود.

  2. VBOKCancel: کادر مذکور دارای دکمه های OK و Cancel خواهد بود.

  3. VBYesNo: کادر مذکور دارای دکمه های Yes و No خواهد بود.

  4. VBYesNoCancel: کادر مذکور دارای دکمه های Yes و No و Cancel خواهد بود.

  5. VBAbortRetryIgnore: کادر مذکور دارای دکمه های Abort و Retry و Ignore خواهد بود.

  6. VBRetryCancel: کادر مذکور دارای دکمه های Retry و Cancel خواهد بود.

  7. VBMsgBoxRight: در کادر مذکور Title را راست چين می‌کند.

  8. VBMsgBoxRtlReading: کادر مذکور را راست به چپ (Right to Left)  می‌کند (و برای پيغام های فارسی مناسب است)

  9. VBCritical: يک علامت       در کنار کادر اضافه خواهد شد.

  10. VBExclamation: يک علامت       در کنار کادر اضافه خواهد شد.

  11. VBInformation: يک علامت       در کنار کادر اضافه خواهد شد.

  12. VBQuestion: يک علامت      در کنار کادر اضافه خواهد شد.

نکته: می توان آنهايی را که با هم تداخلی ندارند با علامت + با هم ترکيب کرد. مثلاً اگر بخواهيم که هم دکمه های OK و Cancel بيايند و هم در کنار پيغام، علامت          بيايد و هم Title راست چين شود، می توان در اين پارامتر چنين نوشت:

VBOKCancel + VBInformation + VBMsgBoxRight

Title: که می توان عبارتی که در TitleBar اين کادر می آيد را مشخص نمود.

به عنوان مثال اگر دستورات:

Dim Result As VbMsgBoxResult

Result = MsgBox (“Are you sure you want to exit?”,vbQuestion+vbYesNo, “Exit”)

IF Result = vbYes then Unload Me

را وارد کنيم، در اينصورت در زمان اجرای اين دستورات ابتدا شکل 13 به کاربر نمايش داده خواهد شد و در صورتی که کاربر به پيغام داده شده پاسخ Yes دهد، فرم فعال (که در VB با Me نمايش داده می شود)، Unload خواهد شد:

شکل 13

توجه داريم که نتيجه تابع MsgBox از نوع داده vbMsgBoxResult می باشد و لذا ما در بالا متغير Result را از اين نوع داده تعريف کرديم. اين نوع داده می تواند يکی از مقادير vbAbort، vbCancel، vbIgnore، vbNo، vbOK، vbRetry و vbYes باشد.