インプットボックスは、ユーザーの指定する文字列や数値を扱う際に非常に便利な関数(メソッド)です。
条件を詳細に規定することで数値や文字列など適格に値を入力させることも可能です。
今回はそのインプットボックスについて解説します。
インプットボックス関数とメソッドの違い
InputBox関数はWord、PowerPointなど他のOffice製品で使用できるのに対し、
InputBoxメソッドはExcel専用のAppicationで、他のOfficeには使用できないという特徴があります。
コードの記載方法のほか、条件設定の際の引数やボタンの位置などの違いがあります。
エクセルのみで完結する場合は、InputBox関数を使えばよいのでは・・・・
と思いがちですが、
数値や文字列の制限をしたい場合はInputBoxメソッドを使用します。
ですので、使用方法をよく理解して正しい使い分けをしましょう。
InputBox関数について
はじめにインプットボックス関数について解説します。
コードの記述方法と引数は以下の通りです。
InputBox(Prompt,[Title],[Default],[XPos],[YPos],[HelpFile],[Context])
引数 | 説明 | 省略可否 |
Prompt | 入力ダイアログボックス内に表示するメッセージの文字列を指定します。 | 不可 |
Title | 入力ダイアログボックスのタイトルバーに表示する文字列を指定します。 | 可 |
Default | 入力用のテキストボックスに既定値で表示する文字列を指定します。 | 可 |
XPos | 入力ダイアログボックスを表示する位置のX座標を指定します。 | 可 |
YPos | 入力ダイアログボックスを表示する位置のY座標を指定します。 | 可 |
HelpFile | ダイアログボックスに状況依存のヘルプを設定するために使用する、 ヘルプファイルの名前を指定します。 | 可 |
Context | ヘルプトピックに指定したコンテキスト番号を表す数式を指定します。 | 可 |
InputBox関数のサンプルコード
見ただけだと分かりずらいので、実際のコードを見てみましょう。
Sub test()
Dim Getstr
Getstr = InputBox(“文章を入力してください”, “タイトル”, “初期値”)
End Sub
上のコードではタイトルと、ユーザーに対するメッセージ、あらかじめ記入欄に記入されている初期値をいじりました。
そのほか、XPos,YPosでは画面上のどこにポップアップ画面が出てきてほしいかを指定できます。
キャンセルや未入力時の処理について
- 入力のキャンセル
- ×ボタンでの削除
- 未入力で確定
ユーザーが上記の対応をした場合、エラーで返されることはありません。
しかし何も起こらないと味気がなかったり、あるいはミスの元となる可能性があります。
必ず本筋を外れた場合の処置を施しましょう。
上記を踏まえたうえでコード例を見てみましょう。
Sub test2()
Dim Getstr
Getstr = InputBox(“文章を入力してください”, “タイトル”, “初期値”)
‘##################キャンセル判定####################
If StrPtr(Getstr) = 0 Then
MsgBox "キャンセルされました。"
‘##################未入力判定########################
ElseIf Getstr = “” Then
MsgBox "未入力です。"
End If
End Sub
InputBoxメソッド
続いてInputBoxメソッドについて解説します。
先に述べた通り、エクセルのみで完結する場合でも入力に制限をかけたい場合はこちらを使用しましょう。
コードの記述方法と引数は以下の通りです。
Application.InputBox (Prompt[,Title][,Default][,Left][,Top][,HelpFile][,HelpContextID][,Type])
数名 | 説明 | 省略可否 |
Prompt | 入力ダイアログボックス内に表示するメッセージの文字列を指定します。 | 不可 |
Title | 入力ダイアログボックスのタイトルバーに表示する文字列を指定します。 | 可 |
Default | 入力用のテキストボックスに既定値で表示する文字列を指定します。 | 可 |
Left | 入力ダイアログボックスを表示する位置のX座標を指定します。 | 可 |
Top | 入力ダイアログボックスを表示する位置のY座標を指定します。 | 可 |
HelpFile | ダイアログ ボックスに状況依存のヘルプを設定するために使用する、 ヘルプファイルの名前を指定します。 | 可 |
HelpContextID | ヘルプトピックに指定したコンテキスト番号を表す数式を指定します。 | 可 |
Type | 返されるデータ型を指定します。 省略すると文字列を返します。 | 可 |
InputBoxメソッドのサンプルコード
Sub test3()
Dim GetStr
GetStr = Application.InputBox(“文字を入力してください”, “タイトル”, “初期値”)
End Sub
上のコードではタイトルと、ユーザーに対するメッセージ、あらかじめ記入欄に記入されている初期値をいじりました。
関数とは異なり、ボタンが右下に表示されます。
引数 Type
InputBox関数にはない引数の「Type」です。
引数を指定することで、入力できるテキストのタイプを指定できます。
値 | 説明 |
0 | 数式 |
1 | 数値 |
2 | 文字列 |
4 | 論理値(True/False) |
8 | セル(Rangeオブジェクト) |
16 | #N/Aなどのエラー値 |
64 | 数値配列 |
実際にTypeを指定してみます。
Sub test4()
Dim GetStr
GetStr = Application.InputBox(“数値を入力してください”, “タイトル”, Type:=1)
End Sub
Type 1を指定し、数値のみ入力できるようにしました。
実際に100と入力するとそのままマクロが終了します。
一方で、文字列aaaと入力すると、
「数値が正しくありません」のエラーが発報しました。
キャンセルや未入力時の処理について
関数の時と同様にキャンセルや未入力時の処置を組み込みます。
関数の時と異なることとして、キャンセルはFalseで判定します。
Sub test5()
Dim GetStr
GetStr = Application.InputBox(“数値を入力してください”, “タイトル”)
‘##################キャンセル判定####################
Select Case GetStr
Case False
MsgBox "キャンセルされました。"
End
‘##################未入力判定########################
Case “”
MsgBox "未入力です。"
‘##################正常判定##########################
Case Else
MsgBox GetStr
End Select
End Sub
まとめ
InputBox関数とメソッドの使い方を解説しました。
InputBoxはユーザーに値を入力してもらう便利なツールです。
しかしその反面間違いも起こりやすいため、エラーの処置をしっかり施す必要があります。
コメント