インプットボックス(InpuBox)の使い方
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
インプットボックスの使い方
InpuBox の戻り値
基本、「文字列」が返る。
文字列が返ってくることだけが前提のプログラムならいいのですが、
「数字」を「数値」としてとらえたい、とか、
キャンセルボタンが押された場合の分岐も必要、とか、
単に「文字列としての戻り値を扱うだけ」ではない場合は、
IsNumeric関数などを使った、データ型の判断等々が必要。
Msgboxは戻り値が数値なので、特にトラブル無いですけど、
InputBoxは、数値がもどってこないので、トラブル多いです。
※ただし、Application.Inputboxメソッドは、
戻り値の型をあらかじめ指定できるので、
最初からそちらを使ったほうがいいかも?
ただ、整数を入力しても、型が「Double型」になってしまうので、
結局は同じかも??
◎インプットボックスのケース別の戻り値
キャンセルボタンを押したとき→""(空の文字列)
数字を入れたとき(全角、半角)→文字列としての数字。
数字と文字列混在のとき(全角、半角)→文字列。
◎数字だけを入れたときに、「数字だけ」を判別する関数→IsNumeric関数。
IsNumeric関数の戻り値
0→True
60→True
0.5→True
あ→False
100い→False
""→False ※←インプットボックスのキャンセル値。
A25→False
【例01】パスワードの場合
基本、数字だけにはならないので、戻り値が文字列型でまったく問題ない。
なので、戻り値を変数に代入したのち、特にチェックはいらない。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
' ' Let s_PassWdInput01 = InputBox("パスワードを入力してください。", "パスワード入力") '2024/10/02 修正・追加 パスワード保護機能を追加したため。 If s_PassWdInput01 = s_PassWdSvr01 Then 'パスワードが合っていたらOK。 '何もしないで次へ。 ElseIf s_PassWdInput01 = "" Then 'キャンセルのとき、終わる。 Exit Sub Else MsgBox "パスワードが違います。" Exit Sub End If ' ' |
【例02】数値だけが入力されたことを判別したいとき
入力値が、文字列と数値とが混在するとエラーになったり、誤作動の原因になりますので、
戻り値を変数に代入したら、必ず、型のチェックや、場合によっては変換が必要です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
' ' Let i_NoudoPercent01 = InputBox(" 「" & s_LogoTitle & "」 のロゴの濃度をパーセンテージで指定してください。" & vbCrLf & "50以上で薄く・50以下で濃くなります。" & vbCrLf & "初期値は50です。" & vbCrLf & "OKボタン押下後の設定反映に10~20秒ほどかかります。") '入力された値が、「数字のみ」かどうかのチェック。(全角の数字も許可。) If IsNumeric(i_NoudoPercent01) = True Then Let i_NoudoPercent01 = CInt(i_NoudoPercent01) ElseIf IsNumeric(i_NoudoPercent01) = False Then 'キャンセルが押されたときも、ここに含まれる。 MsgBox "数字以外が入力されたか、キャンセルされました。最初からやり直してください。" Exit Sub Else End If 'Stop If i_NoudoPercent01 = 0 Then '0が入力されたとき、終わる。 MsgBox "「0」以外の整数を入力してください。最初からやりなおしてください。" '少数でもエラー出ないけど。 Exit Sub ElseIf 1 <= i_NoudoPercent01 Then '何らかの数値(=濃度)が指定されていたらOK。 '何もしないで次へ。 Else MsgBox "エラーです。管理者に連絡してください。" Exit Sub End If ' ' |
1 2 3 4 5 6 |
' ' ' ' |