VBA入門
インプットボックス(InputBox関数)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2021-08-27

第24回.インプットボックス(InputBox関数)


マクロ VBA InputBox関数

ダイアログボックスにメッセージとテキスト ボックスを表示し、ユーザーが入力した文字列を取得することが出来ます。


マクロVBAの最初または途中で、ユーザーの入力によって処理を変更したい場合が出てきます。
これを実現するには、マクロVBAではInputBox関数を使います。

関数とは、
多くの人が共通して必要となる機能(命令)を一塊にしてプログラミング言語として用意されているものです。


InputBox関数の構文

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

prompt 必ず指定します。
ダイアログ ボックス内にメッセージとして表示する文字列を示す文字列式を指定します。
名前付き引数 prompt に指定できる最大文字数は、1 バイト文字で約 1,024 文字です。
ただし、使う文字の文字幅に依存します。
名前付き引数 prompt に複数行を指定する場合は、キャリッジ リターン (Chr(13))、ライン フィード (Chr(10))、またはキャリッジ リターンとライン フィードの組み合わせ (Chr(13) & Chr(10)) を改行する位置に挿入し、行を区切ってください。
title 省略可能です。
ダイアログ ボックスのタイトル バーに表示する文字列式を指定します。
名前付き引数 title を省略すると、タイトル バーにはアプリケーション名が表示されます。
default 省略可能です。
ユーザーが何も入力しない場合に、テキスト ボックスに既定値として表示する文字列式を指定します。
名前付き引数 default を省略すると、テキスト ボックスには何も表示されません。
xpos 省略可能です。
画面の左端からダイアログ ボックスの左端までの水平方向の距離を、twip単位で示す数式を指定します。
名前付き引数 xposを省略すると、ダイアログ ボックスは水平方向に対して画面の中央の位置に配置されます。
ypos 省略可能です。
画面の上端からダイアログ ボックスの上端までの垂直方向の距離を、twip単位で示す数式を指定します。
名前付き引数 ypos 省略すると、ダイアログ ボックスは垂直方向に対して画面の上端から約 1/3 の位置に配置されます。
helpfile 省略可能です。
ダイアログ ボックスに状況依存のヘルプを設定するために、使用するヘルプ ファイルの名前を示す文字列式を指定します。
この引数は、表示するダイアログ ボックスの説明を、ヘルプを使って表示するときに指定します。
名前付き引数 helpfile を指定した場合は、名前付き引数contextも指定する必要があります。
context 省略可能です。
ヘルプ トピックに指定したコンテキスト番号を表す数式を指定します。
名前付き引数 context を指定した場合は、名前付き引数 helpfile も指定する必要があります。
※上記はヘルプを整形したものです。

引数は、名前付き引数が使用できます。
helpfile、contextはヘルプなので、あまり使わないと思いますので、説明を省きます。


名前付き引数

あらかじめ定義された名前を持つ引数。
名前付き引数を使用すると、構文どおりに指定された順序で各引数に値を指定しなくても、任意の順序で値を設定することができます。

※名前付き引数については、次回詳しく説明します。
第25回.名前付き引数について
・仮引数と実引数 ・メソッドとは ・名前付き引数について ・名前付き引数の例文 ・名前付き引数の必要性

しかしInputBoxでは、名前付き引数を使う事はそれほど多くはありません。
名前付き引数を使用せず、順番通りに指定して構わないでしょう。


InputBox関数の例文

promptのみ
Dim strIn As String
strIn = InputBox("何か入力して下さい。")

マクロ VBA InputBox関数

メッセージのみ指定した場合です。
ダイアログ画面の表示内容を確認して下さい。

promptを複数行
Dim strIn As String
strIn = InputBox("何か入力して下さい。" & vbLf & vbLf & "入力サンプルをここに書きます。")

マクロ VBA InputBox関数

複数行のメッセージを指定した場合です。

prompt、title、defaultを指定
Dim strIn As String
strIn = InputBox("何か入力して下さい。", "ユーザー入力", "既定文字")

マクロ VBA InputBox関数

メッセージ、タイトル、既定値を設定した場合です。
ダイアログ画面の表示内容を確認して下さい。
何も入力されなかったか、「キャンセル」ボタンが押された場合の対処。

何も入力されなかった場合
Dim strIn As String
strIn = InputBox("何か入力して下さい。", "ユーザー入力", "規定文字")
If strIn = "" Then
  MsgBox "何も入力されませんでした。"
End If

何も入力されなかったか、「キャンセル」ボタンが押された場合は、空白が返されます。
従って、受け取った変数を、""で判定すれば良いです。
何も入力されなかった場合と「キャンセル」の時を区別したい場合は、以下を参照してください。
空文字の扱い方と処理速度について
・String型変数のメモリ配置と取得する関数 ・空文字列について ・String変数に空文字列を入れる ・セルに空文字列を入れる ・Stringが空文字列か判定 ・InputBox関数の戻り値が空文字列判定 ・空文字列の処理方法による速度比較

[, xpos] [, ypos]について
表示位置の指定です。
サンプル表示しても意味が無いので省略します。

ただし、中央に表示されるので通常は特に指定はしません。

指定数値はtwipなので、VBAでは管理が難しいものになりますので、ここでは省略します。
実務的には左上に表示するくらいでしょうか、その場合は0,0を指定すれば良いです。




同じテーマ「マクロVBA入門」の記事

第21回.条件分岐(ElseIf)
第22回.条件分岐(Select Case)
第23回.メッセージボックス(MsgBox関数)
第24回.インプットボックス(InputBox関数)
第25回.名前付き引数について
第26回.総合練習問題2
第27回.ブック・シートの選択(Select,Activate)
第28回.セル・行・列の選択(Select,ActivateとCurrentRegion)
第29回.セル・行・列の削除・挿入(Delete,Insert)
第30回.総合練習問題3
第31回.セルの書式(表示形式,NumberFormatLocal)


新着記事NEW ・・・新着記事一覧を見る

ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ