VBA|InputBoxで数値のみ入力できるようにする方法

エクセルVBA VBAでワークシートの操作



InputBoxで数字のみ入力できるようにしたいときがあります。

その場合はどのようにすればよいのでしょうか。

今回はInputBoxで数字のみ入力できる方法について説明します。



InputBoxで数値のみ入力できるようにする方法

InputBoxで数値のみ入力できるようにするサンプルコード

InputBoxで数字のみ入力できるようにしたサンプルコードは以下のとおりです。

Sub 数値入力()
    Dim hensu As Variant
    hensu = Application.InputBox(prompt:="数値を入力してください", _
                                Title:="数値入力", _
                                Type:=1)
    If TypeName(hensu) = "Boolean" Then
        MsgBox "キャンセルします"
        Exit Sub
    End If
    MsgBox hensu
End Sub

実行すると、インプットボックスが立ち上がり、数値以外を入力すると「数値が正しくありません。」と記載されたメッセージボックスが表示されます。

インプットボックス
数値以外を入力したときのメッセージ

インプットボックスのキャンセルボタンを選択すると、「キャンセルします」と記載されたメッセージボックスが立ち上がり、処理が終了します。

キャンセルを選択したときのメッセージ

サンプルコードの解説

ApplicationオブジェクトのInputBoxメソッドは、「引数Type」に入力できるデータの型が以下の表のように設定でき、「数字」で設定します。

今回は数値のみ入力できるようにするので、データの型を数値に設定するためにInputBoxを「Type:=1」にします。

データの型
数式
数値
文字列
論理値(True または False)
セル参照
「♯N / A」などのエラー値 16
数値配列 64

「Type:=1」 に設定したことで、インプットボックスに数値以外を入力すると「数値が正しくあいりません。」とメッセージボックスが表示されるようになります。

この「数値が正しくありません。」のメッセージボックスは、コードに記述しなくてもデフォルトで設定されているエラーメッセージです。

一方で、キャンセルボタンを押したときには、コードにキャンセルしたときの動作を記述していないと「FALSE」という値が返ってきてしまいます。

つまり、InputBoxに入力した値をメッセージボックスやセルに入力するコードの場合、値「FALSE」が返ってきてしまいます。

メッセージボックスに返ってきた値
セルに返ってきた値

意図しないセル等に値「FALSE」が入らないように、キャンセルしたときにExit Sub等でマクロを終了させるような設定をする必要がありますので、以下のコードを記述します。

If TypeName(hensu) = “Boolean” Then
MsgBox “キャンセルします”
Exit Sub
End If

キャンセルしたとき(「OK」がクリックされないとき)は、TypeName関数の戻り値が「Boolean」になるので、このときに処理を「Exit Sub」で終了させます。

これで今回の場合はメッセージボックスにFALSEと表示されなくなりました。

もしセルにInputBoxで返ってきた値を入れる場合でも、キャンセルしたときに「FALSE」が入るのを防ぐことができます。

【まとめ】InputBoxで数値のみ入力できるようにする方法

InputBoxに数値のみ入力できるようにするには、引数Typeを「Type:= 1」に設定します。

もし数値以外を入力すると、あらかじめ設定されている「数値が正しくありません。」のメッセージボックスが表示されます。

InputBoxは頻繁に使う重要な項目ですので、ぜひ覚えておいてくださいね!

InputBoxについてもっと知りたい方は、以下の記事も読んでくださいね。

Excel VBA入門 その38:InputBoxで入力制限をして日付だけ入力できるようにする方法

Excel VBA入門 その37:InputBoxでパスワード入力をマスクする方法

Excel VBA入門 その35:InputBoxで改行する方法

コメント

タイトルとURLをコピーしました