تابع InputBox در وی بی (VBA)
یکی از اهداف استفاده از VBA در اکسل تعامل مدیریت شده با کاربران است. راه های مختلفی برای برای تعامل با کاربر در وی بی تعریف شده که یکی از این راه ها استفاده از تابع InputBox در وی بی هست. با اجرا شدن تابع InputBox یک پنجره نمایش داده میشه که امکان دریافت اطلاعات در قالب نوشتن در این پنجره فراهم میشه. در این پنجره دو دکمه OK و جهت تأیید اطلاعات نوشته شده و Cancel جهت انصراف از ورود اطلاعات وجود داره. زمانیکه دکمه OK فشرده شود خروجی تابع InputBox، متنی هست که کاربر نوشته و در صورتیکه Cancel انتخاب شود یک عبارت خالی به عنوان خروجی ارسال میشه.
ساختار تابع InputBox به شکل زیر است:
InputBox( Prompt, [Title], [Default], [XPos], [YPos], [HelpFile], [Context] )
اجزای آرگومان این تابع به این صورت هست:
متنی که به عنوان توضیحات در پنجره نمایش داده میشه | Prompt |
متن اختیاری که در بالای پنجره به عنوان موضوع نمایش داده میشه | [Title] |
متن اختیاری که به عنوان مقدار پیشفرض وارد شده توسط کاربر قرار داده میشه | [Default] |
عددی اختیاری جهت تعیین فاصله افقی از سمت چپ پنجره نمایش داده شده تا لبه صفحه نمایش | [XPos] |
عددی اختیاری جهت تعیین فاصله عمودی از بالای پنجره نمایش داده شده تا لبه صفحه نمایش | [YPos] |
متن اختیاری جهت مشخص کردن فایل راهنمای مربوط به این پنجره هست.
توجه کنید که اگه این قسمت مقداردهی شده باشه، مقدار آرگومان [Context] هم باید مقداردهی شده باشه |
[HelpFile] |
یک عدد اختیاری جهت تعیین عنوان مورد نظر در فایل راهنمای مشخص شده در بخش [HelpFile] هست | [Context] |
چند مثال از این تابع
مثال اول: دریاف اطلاعات در ساده ترین حالت
۱ ۲ ۳ ۴ ۵ ۶ |
Sub GetName() ' درخواست نام از کاربر Dim UserName As String UserName = InputBox("لطفا نام خود را وارد کنید") ' نام دریافت شده از کاربر در متغیر تعریف شده ذخیره میشه End Sub |
بعد از اجرای دستور بالا پنجره ای که در شکل ۱ مشاهده میکنید جهت دریافت نام کاربری نمایش داده میشه.
شکل ۱- دریافت نام کاربری
زمانیکه پنجره نمایش داده میشه، اجرای کدهای وی بی برای دریافت عبارت درخواستی از کاربر متوقف میشه. بعد از ورود اطلاعات و فشردن هر یک از دکمه ها نتیجه به کدها برگردونده میشه
در پنجره InputBox اگر دکمه OK فشرده بشه، متن وارد شده در پنجره برگردونده میشه و اگر دکمه Cancel فشرده بشه، خروجی تابع InputBox یک متن با محتوای خالی هست.
در کد بالا یک متغیر با نام UserName تعریف شده که هدف از تعریف آن ذخیره خروجی تابع InputBox هست که در کدهای بعدی ازش استفاده بشه.
مثال دوم: دریافت اطلاعات از کاربر با تنظیمات بیشتر
۱ ۲ ۳ ۴ ۵ ۶ |
Sub GetName() ‘ درخواست نام کاربری Dim UserName As String UserName = InputBox("لطفا نام خود را وارد کنید", " دریافت نام کاربری ", Environ("Username")) ' نام دریافت شده از کاربر در متغیر تعریف شده ذخیره میشه End Sub |
کدی که در مثال یک زدیم رو تکمیل کردم که پنجره مفهوم تری به کاربر نمایش داده بشه و با استفاده از دستوری Environ نام کاربری ویندوز رو هم به صورت مقدار پیشفرض برای این پنجره قرار دادم که کاربر راحت تر باشه. نتیجه اجرای این کد در شکل ۲ نمایش داده شده.
شکل ۲- دریافت اطلاعات از کاربر با جزئیات بیشتر
تو این آموزش سعی کردم که کار با تابع InputBox در وی بی رو آموزش بدم. شما هم میتونید مقادیر مختلفی برای آرگومان های این تابع قرار بدید و تا جائیکه لازم هست این پنجره رو برای استفاده از کاربران فایلتون راحت تر کنید.
تابع InputBox یک ابزار اولیه برای دریافت اطلاعات از کاربر هست و در آینده سایر ابزارهای تعامل با کاربر (نمایش پیغام دلخواه به کاربر) رو آموزش میدیم.
با درود و احترام-سپاسگزار آموزشهای بسیار مفید ، روان و کامل شما بوده و بهروزی و توفیق روزافزونتان را از پروردگار آرزومندم
سلام
چگونه می توان مخلوطی از msgbox و inputbox را داشت
یعنی پیغام نمایش داده بشه و ما از بین ۳ یا ۴ گزینه یکی را باید انتخاب کنیم یا اینکه ۳ یا ۴ دکمه جهت انتخاب بگذاره
درود
inputbox یک ورودی داره
برا یاینکه بتونید چند وروردی داشته باشید، یک یوزرفرم نیاز دارید با فرم کنترل هایی مثل checkbox, option button و …
سلام
بهترین کار ساخت یوزرفرم اختصاصی متناسب با نیازتون هست.
با سلام ، سوال من درباره inputbox هس ممنون میشم پاسخ رو ایمیل کنید: زمانی که ما بصورت پیش فرض عدد ۱ رو برای کاربر کدنویسی میکنیم یعنی اگر کاربر عددی وارد نکرد خود به خود یک ثبت بشه حالا زمانی که کاربر کلاً منصرف میشه و دکمه cancel رو میزنه چرا ارور میده مگه پیش فرض نباید پنجره inputbox بسته بشه ؟ من از if استفاده کردم و گفتم اگه کنسل انتخاب شد sheet3 انتخاب بشه ولی ارور داد به این صورت: :run- tim error 1004
Method ‘printout’ of object ‘sheets’ failed
درود
برای حل این مشکل قبل از Inputbox عبارت On Error Resume Next بذارید که به کاربر خطا نمایش داده نشود و بعد از InputBox باید یک شرط گذاشته بشه و Err.Number بررسی بشه. اگه خروجی آن بیشتر از یک بود یعنی کاربر Cancel رو انتخاب کرده و شما باید متناسب با اون کد لازم رو اجرا کنید و اگر خروجی صفر باشد یعنی خطایی رخ نداده و کاربر مقدار را وارد کرده است.
سلام. ممنون از اطلاعات خوبتون
فرق INPUTBOX , MSGBOX هردوشون یک کار رو انجام میدن یا بهتر بگم INPUTBOX اون یکی رو میپوشونه. درسته؟
سلام
فرق InputBox اینه که این ابزار جهت دریافت اطلاعات استفاده میشه و Msgbox صرفا برای نمایش اطلاعات هست.
سلام به مهندسین عزیز
لطفا پاسخ دهید:
یک سایت وجود داره که یک سری داده رو میگیره روی اون محاسباتی انجام میده و در خروجی حاصل رو نمایش میده.
آیا راهی وجود داره که در سلول هایی در اکسل داده ها وارد شود و لینک شود به سایت مذکور و خروجی سایت لینک شود به سلولی در اکسل و نمایش داده شود بدون اینکه نیاز باشد سایت را باز کنیم؟؟؟؟
باتشکر
درود
بستگی به ساختار سایت داره که این امکان رو گذاشته باشه یا نه
اگر امکانش برای سایت باشه، از data/ from web اسم سایت رو میدید و بقیه مراحل رو طی میکنید
سلام
استاد ارجمندیک سوال داشتم
چگونه میتوان یک فرم در اکسل ایجاد کرد که رابطه کاربری ان ساده و زیبا باشد
سلام
با استفاده از یوزرفرم ها میتونید فرم های ورود داده مختلتفی در اکسل ایجاد کنید.
اگر به این موضوع علاقه مند هستید کتاب یوزرفرم های مقدماتی و یوزرفرم های پیشرفته را ببینید.