【ExcelVBA入門】入力ダイアログを作るためのInputBoxの使い方とは

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで入力ダイアログを作ったことがありますか?

入力ダイアログは、ちょっとした入力をしてもらいたいときに覚えておくととても便利です。

そこで今回は、

・InputBoxを使った入力ダイアログの使い方

といった基礎的なことから、

・OK、キャンセルを押した場合の処理の作り方

・パスワードのようなアスタリスク表示したい場合の対処方法

といった応用的な方法まで、徹底的に解説します!

InputBoxとは

最初に、InputBoxの使い方について説明します。

InputBoxは次のように書きます。

Application.InputBox(Prompt,[Title],[Default],[XPos],[YPos],[HelpFile],[HelpContextId],[Type])


No項目名概要
1Promptダイアログに表示するメッセージ。この項目のみ必須
2Titleダイアログのに表示するタイトル
3Default入力項目のデフォルト値
4XPosダイアログの表示位置(X軸)
5YPosダイアログの表示位置(Y軸)
6HelpFileヘルプ用のファイルを指定。指定するとヘルプボタンが追加される
7HelpContextIdヘルプボタンクリック時に表示するページ位置
8Type入力タイプ(数式、数値、文字列など)

引数がすこし多いですが、すべて覚える必要はありません。

PromptTitleDefaultTypeあたりはよく使うので、覚えておくのがおすすめです!

補足:Typeについて

Typeのみ少しわかりづらいので補足します。

Typeは、数値のみ文字列のみなど入力タイプを指定したいときに使います。

入力タイプは以下の通りです。

0数式
1数値
2文字列
4論理値(True/False)
8セル参照(Rangeオブジェクト)
16エラー値(#N/Aなど)
64数値配列

たとえば、数値のみ入力させたい場合は、次のように書きます。

Sub Test()
  Dim Num As Long
  Num = Application.InputBox(Prompt:="数値を入力してください", Type:=1)
  
  MsgBox Num & "を入力しました"
End Sub

数値以外を入力すると、次のように警告メッセージを表示します。

事前に入力するタイプが決まっている場合は、設定しておくと便利ですね。

InputBoxを使ったサンプルコード

最後に、サンプルコードをもとに応用的な使い方について解説します。

サンプルコード:

Sub Test2()

    Dim strName As String
    strName = Application.InputBox(Prompt:="名前を入力してください", Type:=2)

    'キャンセルした場合
    If strName = "False" Then
      MsgBox "キャンセルされました。"
      Exit Sub
    
    '数値が入っている場合
    ElseIf IsNumeric(strName) = True Then
      MsgBox "数値が入力されています。" & vbCrLf & _
             "文字列を入力してください。", vbExclamation
      Exit Sub
    
    Else
      MsgBox strName & "が入力されました。", vbInformation
    End If

End Sub

キャンセルクリック時のメッセージ:

数値を入力したときのメッセージ:

文字列を入力したときのメッセージ:

入力タイプが文字列(Type:=2)でキャンセルを押した場合は、「"False"」が戻り値として返ってくるため条件式を追加しています。

また、入力タイプが数値のみ(Type:=1)のときは文字列入力で自動で警告メッセージがでましたが、入力タイプが文字列(Type:=2)の場合は数値を入力しても文字列として認識されてしまうため条件式を追加しています。

入力ダイアログを使う場合は、予期せぬ値が戻り値としてきたときにも処理が動くことを意識して、サンプルのように条件をつけていくのがおすすめです!

if文の使い方、MsgBoxの使い方については以下で詳しく解説していますので、気になる方は見てみてくださいね!

VBAのIf文を使いこなそう! 条件分岐の基本をスッキリ解説
更新日 : 2019年9月26日
【Excel VBA】MsgBoxでメッセージボックスを表示する方法
更新日 : 2019年4月25日

補足:パスワードの入力でアスタリスク(*)を使用したい方へ

InputBoxはちょっとした確認メッセージとして便利なのですが、パスワードのような入力した値をアスタリスク(*)で表示することができません。

そのため、アスタリスク(*)表示したい場合は、ユーザーフォームを使うのがおすすめです!

ユーザーフォームの作り方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

【VBA入門】ユーザーフォームの使い方(テキスト表示、カレンダー)
更新日 : 2019年4月22日

まとめ

今回は、VBAで入力ダイアログを作る方法について解説しました!

入力ダイアログを使うと、少ない行数で簡単に入力画面を使った処理を作ることができます。

覚えておくととても便利なので、ぜひ使ってみてくださいね!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

Sanshiro Wakizaka

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!

侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー