VBAで入力ボックスを使うには、InputBoxを使います。
InputBoxを使うと文字や数値の入力はもちろん、セル選択もできます。
じつはVBAで使用するInputBoxには2種類あるのです。
今回は、InputBoxを使って入力ボックスを表示する方法や2種類のInputBoxの違いについて説明します。
VBAで入力ボックスを表示させる方法
VBAやExcelの入力ボックスというと、以下のものがあります。
これは、InputBoxを使って表示させます。
InputBoxを使って文字入力やセル選択をすることができます。
InputBoxには2種類ある
じつは、VBAにはInputBoxが2種類あります。
InputBox関数と、ApplicationオブジェクトのInputBoxメソッドです。
それぞれの入力ボックスについて説明します。
InputBox関数
InputBox関数は、VBAに用意されている関数で、入力ボックスに入力した文字列を返すものです。
InputBox(Prompt, [Title], [Default])
日本語訳すると、以下のようになります。
InputBox(表示文字列, タイトル, 入力欄の規定値)
Prompt : メッセージとして表示する文字列です。
Title (省略可): タイトルバーに表示する文字列です。
Default (省略可): 入力欄に表示しておく規定値を指定します。
Sub InputBox関数()
Dim hensu As String
hensu = InputBox("メッセージ", "タイトル", "入力欄の規定値")
Cells(1, 1) = hensu
End Sub
実行すると、入力ボックスが表示されます。入力ボックスに文字列「バナナ」を入力すると、セルA1に「バナナ」が表示されます。
ちなみにInputBox関数では、「キャンセル」をクリックすると「長さ0の文字列(””)」が返ります。
ApplicationオブジェクトのInputBoxメソッド
ApplicationオブジェクトのInputBox メソッドは、入力できるデータの種類を指定して入力することができます。
指定できるデータの種類は、文字列の他に数式、数値、論理値(TrueまたはFalse)、セル参照、エラー値、数値配列です。
Application.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type)
日本語訳すると、以下のようになります。
Application.InputBox(表示文字列, タイトル, 入力欄の規定値, ボックスのX座標の表示位置, ボックスのY座標の表示位置, 使用するヘルプファイル名, ヘルプファイル内のコンテキストID, データ型)
Prompt : メッセージとして表示する文字列です。
Title (省略可): タイトルバーに表示する文字列です。
Default (省略可): 入力欄に表示しておく規定値を指定します。
Left (省略可): 画面の左上隅を基準として、入力ボックスの表示位置のX座標を指定します。
Top (省略可): 画面の左上隅を基準として、入力ボックスの表示位置のY座標を指定します。
HelpFile (省略可): 入力ボックスで「ヘルプ」を使うときに、使用するヘルプファイルを指定します。
HelpContextID (省略可): 上記のヘルプファイルのpコンテキストIDを指定します。
Type (省略可): 返されるデータの型を指定します。
値 | データの型 |
0 | 数式 |
1 | 数値 |
2 | 文字列(テキスト) |
4 | 論理値(TrueまたはFalse) |
8 | セル参照(Rangeオブジェクト) |
16 | 「#N/A」などのエラー値 |
64 | 数値配列 |
Sub inputboxメソッド()
Dim hensu As String
hensu = Application.InputBox(Prompt:="メッセージ", _
Title:="タイトル", _
Default:="規定値", _
Type:=2)
Cells(1, 1) = hensu
End Sub
実行すると、入力ボックスが表示されます。入力ボックスに文字列「バナナ」を入力すると、セルA1に「バナナ」が表示されます。
インプットボックスでセル参照をする方法
インプットボックスを表示させたとき、直接エクセルシート上でセル参照をするサンプルコードを紹介します。
インプットボックスが表示され、セル上の値を直接クリックで選択して、そのセルの値をセルA2に表示させるサンプルコードです。セルA1の文字列「バナナ」を直接クリックしてみます。
Sub セル参照()
Dim hensu As String
hensu = Application.InputBox(prompt:="セル参照", _
Type:=2)
Cells(1, 2) = hensu
End Sub
クリックしたセルに入力されている値「バナナ」を拾えます。
InputBox関数とApplicationオブジェクトのInputBoxメソッドの違い
両者の決定的な違いは、
- InputBox関数 ⇒ 入力した文字列が返る
- InputBoxメソッド ⇒ 指定したデータ型の値が返る
というものです。
文字列以外のデータ型の値を使用する際には、InputBoxメソッドを利用することになります。
コメント
[…] 参考:Excel VBA入門 その34:VBAで入力ボックスを表示する方法(InputBox) […]