【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で入力ダイアログを作る方法について解説しました!

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

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

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説