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」にします。
データの型 | 値 |
数式 | 0 |
数値 | 1 |
文字列 | 2 |
論理値(True または False) | 4 |
セル参照 | 8 |
「♯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で改行する方法
コメント