اگر به تازگی توسعه ماکروها را شروع کردهاید، ممکن است به دنبال یک راه ساده برای ارائه مجموعهای از انتخابها به کاربر و سپس انجام یک اقدام بر اساس پاسخ کاربر باشید. اگر از آن استفاده میکنید، این کار نسبتاً سادهای است. تابع InputBox به همراه ساختار Select Case.
اولین کار این است که InputBox خود را راه اندازی کنید تا اطلاعات را به کاربر نمایش دهد. به عنوان مثال، فرض کنید شما پنج گزینه دارید، و می خواهید کاربر از بین آن پنج گزینه، یک گزینه را انتخاب کند. می توانید از کد زیر برای کنار هم قرار دادن پنج گزینه، هر کدام در خط خود استفاده کنید:
sPrompt = "1. This is your first choice" & vbCrLf
sPrompt = sPrompt & "2. This is your second choice" & vbCrLf
sPrompt = sPrompt & "3. This is your third choice" & vbCrLf
sPrompt = sPrompt & "4. This is your fourth choice" & vbCrLf
sPrompt = sPrompt & "5. This is your fifth choice"
اکنون می توانید هنگام فراخوانی تابع InputBox در ماکرو از رشته sPrompt استفاده کنید. سپس آنچه کاربر با آن پاسخ میدهد را به عددی ترجمه میکنید که نشاندهنده انتخاب او از بین پنج گزینه شما است. کد انجام این کار به صورت زیر است:
sUserResp = InputBox(sPrompt, "The Big Question")
iUR = Val(sUserResp)
در این مثال، پاسخ تابع InputBox به متغیر sUserResp که باید یک رشته باشد، اختصاص داده شده است. سپس متغیر iUR که یک متغیر عددی (عدد صحیح) است، بر اساس مقدار رشته تنظیم میشود. (تابع Val مقدار را در یک رشته برمی گرداند.)
تنها کاری که باید انجام دهید این است که بر اساس عددی که از 1 تا 5 انتخاب شده است اقدام کنید. برای این کار می توانید از ساختار Select Case استفاده کنید. زیربرنامه کامل می تواند به صورت زیر در VBA ظاهر شود:
Sub TestInput()
Dim sPrompt As String
Dim sUserResp As String
Dim iUR As Integer
sPrompt = "1. This is your first choice" & vbCrLf
sPrompt = sPrompt & "2. This is your second choice" & vbCrLf
sPrompt = sPrompt & "3. This is your third choice" & vbCrLf
sPrompt = sPrompt & "4. This is your fourth choice" & vbCrLf
sPrompt = sPrompt & "5. This is your fifth choice"
iUR = 0
While iUR < 1 Or iUR > 5
sUserResp = InputBox(sPrompt, "The Big Question")
iUR = Val(sUserResp)
Wend
Select Case iUR
Case 1
"Do stuff for choice 1 here
Case 2
"Do stuff for choice 2 here
Case 3
"Do stuff for choice 3 here
Case 4
"Do stuff for choice 4 here
Case 5
"Do stuff for choice 5 here
End Select
End Sub
توجه داشته باشید که این مثال از یک حلقه Wend در اطراف تابع InputBox استفاده می کند. این کار برای اطمینان از اینکه کاربر عددی را بین 1 تا 5 وارد می کند انجام می شود. اگر مقدار وارد شده خارج از آن محدوده باشد، به سادگی از کاربر دوباره پرسیده می شود.