EXCEL VBAで文字列や数値などを入力する際に、InputBox関数とInputBoxメゾットを使用します。InputBox関数は簡易的な入力用として使用しますが、InputBoxメゾットは、表示するダイアログボックスにメッセージ・タイトル・入力値の初期値・戻り値の型を指定する事が出来るので、詳細に設定する事が可能です。それでは、INPUTBOXメゾットの使用方法の説明を致します。
なお、INPUTBOX関数については、こちらも参照して下さい。
https://akira55.com/inputbox/
Application.InputBox (Prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type)
使用例②: myAns = Application.InputBox(“氏名”, “個人情報”, “山田太郎”, 100, 200, , , 2)
※使用例①と②共に同じ内容でダイアログボックスが表示されます。(上記ダイアログボックス)
引数名 | 必須/省略可能 | データ型 | 説明 |
---|---|---|---|
Prompt | 必須 | String | ダイアログボックスに表示する文字列を設定します。 |
Title | 省略可能 | Variant | ダイアログボックスのタイトルを設定します。 |
Default | 省略可能 | バリアント型 | テキストボックスに表示される初期値を指定します。 |
Left | 省略可能 | バリアント型 | ダイアログボックスのX座標(横)をポイント単位で指定します。(画面上の左上基準) |
Top | 省略可能 | バリアント型 | ダイアログボックスのY座標(縦)をポイント単位で指定します。(画面上の左上基準) |
HelpFile | 省略可能 | バリアント型 | ※ヘルプトピックで使用します。 |
HelpContextID | 省略可能 | バリアント型 | ※ヘルプトピックで使用します。 |
Type | 省略可能 | バリアント型 | 入力値の返されるデータ型を設定する事が出来ます。 |
Sub AppInputBox01() Dim myAns As String myAns = Application.InputBox("氏名", "個人情報", "山田太郎", 100, 200, , , 2)'InputBoxメゾット設定します。 Range("B3") = myAns '入力値をセル(B3)に代入します。 End Sub Sub AppInputBox02() Dim myAns As String myAns = Application.InputBox(Prompt:="氏名", Title:="個人情報", Default:="山田太郎", Left:=100, Top:=200, Type:=2)'InputBoxメゾット設定します。 Range("B3") = myAns '入力値をセル(B3)に代入します。 End Sub
InputBoxメソッド(Type戻り値):値 | 説明 |
---|---|
0 | 数式 |
1 | 数値 |
2 | 文字列 |
4 | 論理値 (True/ False) |
8 | セル参照 |
16 | #N/A などのエラー値 |
64 | 値の配列 |
Sub AppInputBox03() '戻り値の制御 Dim myNumber01, myNumber02 As Long myNumber01 = Application.InputBox(Prompt:="数値で入力", Title:="暗証番号 一回目", Default:=0, Left:=100, Top:=200, Type:=1) 'InputBoxメゾット設定します。(戻り値をType:=1 数値に設定 myNumber02 = Application.InputBox(Prompt:="数値で入力", Title:="暗証番号 二回目", Default:=0, Left:=100, Top:=200, Type:=1) 'InputBoxメゾット設定します。(戻り値をType:=1 数値に設定 If myNumber01 = myNumber02 Then '2回入力した暗証番号を確認 MsgBox "入力された暗証番号は一致しています。" Else MsgBox "入力された暗証番号は不一致です!!" End If End Sub
Sub AppInputBox04() '問題 Dim Kaitou, Mondai As String Dim I As Long I = 2 '2行目から問題が始まる Do Do Mondai = Cells(I, "A") 'A列の問題を代入 Kaitou = Application.InputBox(Mondai, "問題" & I - 1) 'INPUTBOXに問題の表示・問題番号のタイトルを表示 Loop Until Cells(I, "B") = Kaitou '回答(入力)が正解(B列)するまで繰り返す。 MsgBox I - 1 & "問目正解!" I = I + 1 '次の問題に Loop While Cells(I, "A") <> "" 'A列の問題が無くなるまで繰り返す。 MsgBox "全ての問題に解答できました。" End Sub
Sub AppInputBox05() '住所録登録 Dim Inp_Address, Inp_Koumoku As String Dim Inp_Modori, I, L As Long L = 5 '5行目から住所を登録する。 Do For I = 2 To 4 '項目の氏名・住所・電話番号を繰り返す。 Inp_Koumoku = Cells(4, I) '4行名の項目名を代入 Inp_Modori = Cells(3, I) '3行名の戻り値を代入 Inp_Address = Application.InputBox(Inp_Koumoku & "の入力", "住所録の登録", Type:=Inp_Modori) 'INPUTBOXに問題の表示・問題番号のタイトルを表示 If Inp_Address = "*" Then Exit For Else Cells(L, I) = Inp_Address Cells(L, "A") = L - 4 'A列に登録番号を入力します。 End If Next I L = L + 1 '次の入力行(+1)に繰り返す。 Loop While Inp_Address <> "*" '「*」が入力されるまで繰り返す。 MsgBox "住所録の登録を終了しました" End Sub