関数 |
引数 |
Inputbox |
"メッセージ",タイトル文字列,"テキストボックスの既定文字列" …
★その他の引数についてはMSサイトでご確認ください。 |
ユーザーに入力を促す関数です。ユーザーが入力したデータを戻り値とします。
戻り値は変数に格納する為、変数=Inputbox("メッセージ”…)の形で記述します。
★記述法:変数 = Inputbox(”メッセージ",タイトル文字列,テキストボックスの既定文字列…) |
引数は,(カンマ)でつなげます。第一引数(ユーザーへのメッセージ)以外は省略できますが、引数の順序は必ず守る必要があり省略する引数がある場合は、カンマだけ記述します。
|
ユーザーに氏名を入力させる
|
UserN = InputBox ("氏名を入力してください。","名前確認","漢字で入力")
|
氏名を格納した変数(UserN)をスクリプト内で利用することができます。
|
ユーザーにパスワードを入力させる(正パスワード:9999)
|
x = InputBox ("パスワードを入力してください。","パスワード確認")
If x = 9999 then
MsgBox "正しいパスワードです。"
Else
MsgBox "正しくありません。"
End if |
★パスワード入力を促すInputBox表示
★9999と入力されたら
★「正しいパスワードです」と表示
★そうでない場合は
★「正しくありません」と表示 |
|
「キャンセル」時の処理、「未入力でOK」時の処理を記述する
|
ユーザーが「キャンセル」をクリックした時や、未入力で「OK」をクリックした時の条件は以下のように記述します。
ユーザーの操作 |
条件式 |
「キャンセル」をクリック |
IsEmpty(変数) |
何も入力せず「OK」をクリック |
変数 = "" |
未入力時やキャンセル時にはエラーが発生することがあるので、条件を記述しておきましょう。
x = InputBox
("パスワードを入力してください。","パスワード確認")
If IsEmpty(x) then
MsgBox "キャンセルされました"
ElseIf x = "" then
MsgBox "未入力です"
ElseIf x = 9999 then
MsgBox "正しいパスワードです。"
Else
MsgBox "正しくありません。"
End if |
★パスワード入力を促すInputBox表示
★キャンセルがクリックされたら
★「キャンセルされました」と表示
★未入力で「OK」をクリックされたら
★「未入力です」と表示
★9999と入力されたら
★「正しいパスワードです」と表示
★それ以外合は
★「正しくありません」と表示 |
重要:キャンセル時の条件式(IsEmpty(変数))は、未入力でOK時の条件式(変数
= "")より先に記述します。未入力でOK時の条件式を先に記述してしまうとキャンセルした場合もこちらの条件に合致したものとして処理されてしまいます。
|
「型が一致しません」エラーを回避する (1)
|
InputBoxではユーザーが入力した値を変数に格納します。変数に格納されるデータにはそれぞれ「型」というものがあり、数字はInteger型、文字列はString型、日付はDate型…というような種類があります。
条件式の型と入力された値の型が一致しないとエラーが表示されます。例えば上記パスワード入力の例でも、「変数が9999なら」という
ように条件が数値にも関わらず日本語文字列を入力すると「型が一致しません」というエラーが発生します。この場合は、条件の型も文字列型にすればいいので、x
= "9999"
then
に変更するだけで回避できます。(ダブルクォーテーションで囲むと文字列型になります。)
x = InputBox
("パスワードを入力してください。","パスワード確認")
If IsEmpty(x) then
MsgBox "キャンセルされました"
ElseIf x = "" then
MsgBox "未入力です"
ElseIf x = "9999" then
MsgBox "正しいパスワードです。"
Else
MsgBox "正しくありません。"
End if
|
「型が一致しません」エラーを回避する (2)
|
上記の「型が一致しません」エラーを回避する(1) では、「x が9999なら」という条件だったため、””で囲んで文字列型と認識させることができました。しかし条件が比較演算子であったり計算式であったりした場合には数値を文字列型にすることはできません。
例:年齢が20以上なら…という条件で文字列(例:25歳)を入力するとエラーが発生
x =
InputBox("年齢を入力してください。","年齢確認")
If IsEmpty(x) then
ElseIf x = "" then
ElseIf x >= 20 then
◎文字列(25歳)では比較できずエラー発生
MsgBox "閲覧可能です。"
ElseIf x < 20 then
MsgBox "閲覧不可です。"
End if |
★年齢入力を促すInputBoxを表示
★キャンセルがクリックされたら(→ 何もしない)
★空白でOKされたら(→ 何もしない)
★年齢が20以上なら
★「閲覧可能です。」と表示
★年齢が20未満なら
★「閲覧不可です。」と表示 |
このような場合にはエラーを回避するためOn
Error Resume Nextステートメントをスクリプトの頭に記述します。
On Error Resume Nextは”これ以降のエラーは無視し次の行を実行する”ステートメントで、エラーの原因になったステートメントをスキップし次のステートメントを実行します。
その為、エラー原因となるステートメントの次行に”エラー時に実行されてもいい処理”を記述しておきます。
今回の場合、ユーザーが日本語などを入力すると「x >=20」でエラーが発生します。その為文頭にOn
Error Resume Nextを記述しておくと次のステートメントである「MsgBox
"閲覧可能です。"」が実行されます。しかしエラー時(正しい値が入力されていない時)に「閲覧可能です」ではスクリプト内容的に正しくありません。そこでエラーが発生するステートメントが複数ある場合は、次行の処理がエラー時に実行されてもおかしくないものを先に記述します。つまり「x
< 20 then」を先述すればここでエラーが発生しても次の処理「閲覧不可です。」が実行され、内容的にもおかしくありません。
例:On Error Resume Nextステートメントでエラーを回避する
On
Error Resume Next
x = InputBox ("年齢を入力してください")
If IsEmpty(x) then
ElseIf x = "" then Elseif x < 20 then
←本来ここでエラー発生
MsgBox "利用不可"
←スキップしこの行を実行
ElseIf x >= 20 then
MsgBox "利用可"
End if |
★これ以降のエラーは無視し次の行へ
★年齢入力を促すInputBox表示
★キャンセルがクリックされたら(→ 何もしない)
★空白でOKされたら(→ 何もしない)
★入力された値が20未満なら
(文字等では比較不可)
★「利用不可」と表示(↑をスキップし、実行)
★入力された値が20以上なら
★「利用可」と表示 |
|