VBA関数
InputBox関数

Excelマクロで必須のVBA関数を入門・初級・初心者向けに詳細解説
最終更新日:2021-08-14

InputBox関数


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 も指定する必要があります。


名前付き引数です。
名前付き引数とは、あらかじめ定義された名前を持つ引数。

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

※名前付き引数については、第25回.名前付き引数について
引数とは、関数やメソッド等を呼び出すときに渡す値のことです。この引数を渡す時の記述方法として、名前付き引数があります。マクロVBAでの記述では、:=が使われます。この:=は名前付き引数のみで使用される記述になります。
しかし、InputBox関数では、名前付き引数を使わずに、順番通りに指定する事の方が多いでしょう。

[, xpos] [, ypos]
表示位置の指定です。
サンプル表示しても意味が無いので、各々確認して下さい。
ただし、通常は、真ん中に表示されるので、特に指定はしません。

helpfile、context
これらはヘルプなので、あまり使わないと思いますので、説明を省きます。

InputBox関数の使用例

メッセージのみ指定した場合
Dim strIn As String
strIn = InputBox("何か入力して下さい。")

ダイアログ画面の表示内容を確認して下さい。

マクロ VBA 入門 InputBox

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


Dim strIn As String
strIn = InputBox("何か入力して下さい。" & vbLf & vbLf & "入力サンプル")

マクロ VBA 入門 InputBox

メッセージ、タイトル、規定値をした場合
Dim strIn As String
strIn = InputBox("何か入力して下さい。", "ユーザー入力", "規定文字")

ダイアログ画面の表示内容を確認して下さい。

マクロ VBA 入門 InputBox

何も入力されなかったか、「キャンセル」ボタンが押された場合の対処
Dim strIn As String
strIn = InputBox("何か入力して下さい。", "ユーザー入力", "規定文字")
If strIn = "" Then
  MsgBox "何も入力されませんでした。"
End If

何も入力されなかったか、「キャンセル」ボタンが押された場合は、空白が返されます。
従って、受け取った変数を、""で判定すれば良いです。

「キャンセル」した時と、何も入力せずに「OK」した場合の区別
Sub InputBox関数()
  Dim s
  s = InputBox("空文字確認")
  If StrPtr(s) = 0 Then
    MsgBox "キャンセル"
  ElseIf s = "" Then
    MsgBox "空文字"
  Else
    MsgBox s
  End If
End Sub

以下で詳しく解説しています。
空文字列の扱い方と処理速度について(""とvbNullString)
空文字列と書きましたが、空文字列という表現がかなり曖昧な表現になっています。ここでいう空文字列とは、文字列が入るべき場所に、何も入っていない(ように見える)状態を指しています。VBAにおいては、空文字列の状態が2つあります。


Office VBA リファレンス InputBox関数


※VBA関数一覧
マクロVBA関数の一覧と解説です、どんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば、詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 分岐…3 型変換…14 データ判定…10 日付時刻…20 配列…6 ファイル操作…14 数学/財務…28 その他……



同じテーマ「VBA関数」の記事

Hex関数
Oct関数
Rnd関数
Round関数
InputBox関数
MsgBox関数
Environ関数
RGB関数
DoEvents関数
CreateObject関数
GetObject関数


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

数字(1~50)を丸付き数字に変換するVBA|VBA技術解説(2022-11-15)
TEXTAFTER関数(テキストの指定文字列より後ろの部分を返す)|エクセル入門(2022-11-14)
TEXTBEFORE関数(テキストの指定文字列より前の部分を返す)|エクセル入門(2022-11-14)
TEXTSPLIT関数(列と行の区切り記号で文字列を分割)|エクセル入門(2022-11-12)
LAMBDA以降の新関数はVBAで使えるか|VBA技術解説(2022-11-11)
WRAPCOLS関数(1次元配列を指定数の列で折り返す)|エクセル入門(2022-11-08)
WRAPROWS関数(1次元配列を指定数の行で折り返す)|エクセル入門(2022-11-08)
EXPAND関数(配列を指定された行と列に拡張する)|エクセル入門(2022-11-07)
TAKE関数(配列の先頭/末尾から指定行/列数を取得)|エクセル入門(2022-11-06)
DROP関数(配列の先頭/末尾から指定行/列数を除外)|エクセル入門(2022-11-06)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.並べ替え(Sort)|VBA入門
8.エクセルVBAでのシート指定方法|VBA技術解説
9.マクロって何?VBAって何?|VBA入門
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄




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


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



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