【マクロVBA】実行中に入力画面を表示して文字・数値を活用、変数に格納する方法InputBox

基礎知識

VBAで実行時に変数・数値を入力・格納し反映させたいことはないでしょうか。


例えば、名前を入力したり数値を変更したりなど…

今回はプログラム実行中にポップアップ・メッセージボックスのようなダイアログ画面を表示させ
そこで入力した結果を元にセルに入力したり、変数に格納したりする方法についてまとめています。

仕組みはとても簡単なので実際の画面の例を確認しながら参考にしてみてください。
それでは見ていきましょう。




⬛︎プログラムの構造

入力先・変数 = InputBox(prompt, [ title ], [ default ], [ xpos ], [ ypos ], [ helpfile, context ])

 

要約Ver
入力先・変数 = InputBox(表示メッセージ, [ダイアログボックスの題名], [初期値], [左端からのメッセージ位置], [上端からのメッセージ位置], [ヘルプファイル,ヘルプ内容のコンテキストID番号])

パーツ内容省略説明
Prompt表示メッセージ不可ダイアログメッセージ表示時のメッセージ文字列
titleダイアログボックスの題名タイトルバーに表示される文字列
default初期値テキストボックスに初めから入力してある文字・数値
xpos左端からのメッセージ位置画面左端からの距離。単位は「Twip」※1。省略時は中央となる。
ypos上端からのメッセージ位置画面上端からの距離。単位は「Twip」※1。省略時は上端から1/3の位置となる。
helpfileヘルプファイルヘルプファイル名の指定※2
contextコンテキストID番号ヘルプ内容のコンテキストID番号の指定※2

※1:Twipは「トゥイップ」と呼び、1Twip=1/20ポイント。1Twip=1/20ポイント0.0175mm。

※2:helpfileとcontextはセットで入力が必要です。活用法があまりないので説明を省きます。

■活用方法

では実際に活用方法について見ていきましょう。

・通常の使用方法

まずは必要最小限の表示メッセージのみで活用する方法について紹介します。
下図をご覧ください。

B3に入力結果を表示するようなプログラムを作成してみましょう。
構文は下記の通りです。

入力先・変数 = InputBox(表示メッセージ, [ダイアログボックスの題名], [初期値], [左端からのメッセージ位置], [上端からのメッセージ位置], [ヘルプファイル,ヘルプ内容のコンテキストID番号])

今回は表示メッセージのみ表示させるのでその他は省略します。
ではプログラムを見ていきましょう。

例でメッセージを「出力したい文字を入力してください。」と表示させてみましょう。

構文に当てはめるとこのようになります。

Sub 入力結果を格納()

Dim InputData As String

InputData = InputBox(“出力したい文字を入力してください。“)

Cells(3, 2) = InputData

End Sub

今回は変数の活用をしていますが
「Cells(3, 2) = InputBox(“出力したい文字を入力してください。”)」でも構いません。

それでは実行してみましょう。
結果はこのようになります。

ダイアログが表示され表示メッセージで設定した「出力したい文字を入力してください。」とメッセージが表示され、テキストボックスに文字が入力できるようになっています。

今回は見本で「あいうえお」と入力してみました。
「OK」を押すと下図の結果になります。

B3に「あいうえお」を入力することができました。
今回は変数を「String」で文字列として格納していますが
数値として活用したい場合は「Long」等を活用してください。

変数についてはこちらから☟

【マクロVBA知識 6】変数とは?変数の一覧と意味・変数の宣言をする ► 独学エクセル塾 (dokugakuexcel.com)

・ダイアログのタイトルを入力する

今度はダイアログのタイトルを設定したいと思います。
タイトルはダイアログの上部にある文字を指します。

未設定だと「Microsoft Excel」となっていますね。
では設定していきましょう。

再度、構文をご覧ください。

入力先・変数 = InputBox(表示メッセージ, [ダイアログボックスの題名], [初期値], [左端からのメッセージ位置], [上端からのメッセージ位置], [ヘルプファイル,ヘルプ内容のコンテキストID番号])

今度は数値を入力するダイアログを表示させたいと思います。
メッセージを「出力したい数値を入力してください。
タイトルを「数値入力画面」とします。

先ほどの構文を活用するとこのようになります。

Sub 入力結果を格納()

Dim InputData As Long

InputData = InputBox(“出力したい数値を入力してください。”, “数値入力画面”)

Cells(3, 2) = InputData

End Sub

「InputData = InputBox(“出力したい数値を入力してください。”, “数値入力画面”)」は
「InputData = InputBox(Prompt:=”出力したい数値を入力してください。”, Title:=”数値入力画面”)」でも構いません。

実行した結果はこちらです。

ダイアログのタイトルが「数値入力画面」となっていますね。
今回は見本で「123」と入力してみましょう。

結果はこちらです。

「123」を出力することができました。

・初期値を設定する

初期値とはダイアログボックスに入力する前から
事前に入力してある数値を表します。

構文では
入力先・変数 = InputBox(表示メッセージ, [ダイアログボックスの題名], [初期値], [左端からのメッセージ位置], [上端からのメッセージ位置], [ヘルプファイル,ヘルプ内容のコンテキストID番号])
「初期値」を指します。

では見本を見てみましょう。
先ほどのプログラムに規定値「999」を設定したいと思います。

プログラムはこのようになります。
InputData = InputBox(“出力したい数値を入力してください。”, “数値入力画面”, 999)
または
InputData = InputBox(Prompt:=”出力したい数値を入力してください。”, Title:=”数値入力画面”, Default:=999)

実行した結果はこちらです。

事前に「999」が入力されてありますね。

・ダイアログの表示位置を変更する

ダイアログの表示位置は変更することができます
構文の「入力先・変数 = InputBox(表示メッセージ, [ダイアログボックスの題名], [初期値], [左端からのメッセージ位置], [上端からのメッセージ位置], [ヘルプファイル,ヘルプ内容のコンテキストID番号])の中にある
[左端からのメッセージ位置], [上端からのメッセージ位置]で変更します。

単位はTwipは「トゥイップ」と呼び、1Twip=1/20ポイント、1Twip=1/20ポイント0.0175mmとなります。

先ほどの見本をご覧ください。

指定がない場合は水平方向には中央、垂直方向には上端から1/3の位置
ダイアログが表示されています。

今回は位置を変えてみましょう。
調整は難しいので活用する機会はあまりないと思いますが、一例紹介します。

今回は見本で左から「1000」上端から「5000」の位置に表示したいと思います。

構文に当てはめるとこのようになります。

InputData = InputBox(“出力したい数値を入力してください。”, “数値入力画面”, 999, 1000, 5000)
または
InputData = InputBox(Prompt:=”出力したい数値を入力してください。”, Title:=”数値入力画面”, Default:=999, xpos:=1000, ypos:=5000)

実行した結果はこちらです。

ダイアログの位置が変わりましたね。

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

InputBox 関数 (Visual Basic for Applications) | Microsoft Learn

■まとめ

いかがだったでしょうか。
InputBoxは様々な活用法があります。
繰り返し処理回数を指定できたり、文字を入力・格納できたりととても便利です。

是非活用してみてください。
それでは次回の記事でお会いしましょう。

コメント