【Excel VBA】インプットボックスの使い方

ExcelVBAインプットボックスの使い方
目次

【Excel VBA】インプットボックスの使い方

今回はインプットボックスの使い方について解説をします。

インプットボックスとは

インプットボックスとは、インプットボックス関数のことで、ユーザーへメッセージボックスでを表示し、入力した値を受取ることが出来る関数です。

インプットボックス関数を使えるようになると、ユーザーフォームでなくても簡単にユーザーから入力値を取得することができます。

インプットボックスは2種類ある

インプットボックスは、実は2種類あります。

InputBox

    userName = InputBox( _
                        prompt:="氏名を入力してください", _
                        Title:="氏名入力", _
                        Default:="山田 花子", _
                        xpos:=0, _
                        Ypos:=0 _
                        )

Application.InputBox

    'インプットボックスで名前を入力してもらう
    userName = Application.InputBox( _
                        prompt:="氏名を入力してください", _
                        Title:="氏名入力", _
                        Default:="山田 花子" _
                        )

インプットボックス関数の各引数の使い方

インプットボックス関数には、引数を渡すことで色々できることがあります。

引数名必須・オプションデータ型説明
Prompt必須Stringダイアログボックスに表示されるメッセージや質問です。
これはユーザーに対して何を入力すべきかを指示します。
TitleオプションVariantダイアログボックスのタイトルバーに表示されるテキストです。
DefaultオプションVariantテキストボックスに予め表示されるデフォルト値です。
Xpos
Left
オプションVariantダイアログボックスの左上隅のX座標を指定します。スクリーンの左端からの距離をピクセルで指定します。※Application.inputBoxでは無視されます
Ypos
Top
オプションVariant ダイアログボックスの左上隅のY座標を指定します。スクリーンの上端からの距離をピクセルで指定します。※Application.inputBoxでは無視されます
HelpFileオプションVariantヘルプファイルのパスを指定します。HelpFile引数が指定されている場合、ダイアログボックスにはヘルプボタンが表示されます。
ContextオプションVariantヘルプファイル内の特定のヘルプトピックのコンテキストIDを指定します。HelpFileが指定されている場合にのみ有効です。
TypeオプションVariant返されるデータの型を指定します。 この引数を省略すると、ダイアログ ボックスは文字列 (テキスト) を返します。
Application.Inputboxで利用可能

Prompt

インプットボックスで必須で渡さないといけないのが、Promptです。

ユーザー側に、「何を入力すべきなのか」を伝えるためのメッセージになります。

ExcelVBAInputBoxPrompt

Title

ダイアログボックスのタイトルバーに表示されるテキストです。

ExcelVBAInputBoxTitle

Default

テキストボックスに予め表示されるデフォルト値です。

Left Top

Application.InputBoxでは、値は無視されます。

InputBoxXposYposCODE

HelpFile Context

ヘルプファイルのパスを指定します。HelpFile引数が指定されている場合、ダイアログボックスにはヘルプボタンが表示されます。

今回、動作を検証しましたが指定したPDFファイルを開くことが出来ませんでした。動作方法については、知っている方は、コメントをお願いします。

InputBoxHelpButton

Type

Typeは、Application.Inputboxの時に、入力する型を指定することが出来ます。

説明
0数式
1数値
2文字列(テキスト)
4論理値(True or False)
8セル参照(Range オブジェクト)
16エラー値
64値の配列
ApplicationInputboxType

この中で、数値と文字列とセル参照ぐらいしか使うことは少ない気がします。

とくにエラー値を入力する場面は、想像できませんでした。

キャンセルボタン押下時の処理

VBAで何かを作成しているときは、キャンセルボタンを押下されたことで別処理や、絶対に入力してほしい場合は、入力を促すように処理を入れる必要があります。

なぜなら、InputBox、Application.Inputboxは、キャンセルと×ボンタンで消すことができないからです。

InputBoxの場合

InputBoxの場合、キャンセルを押下すると空文字が返ってきます。

入力されるまで続けてほしい場合
Sub testInput()

    '変数の宣言
    Dim result As Variant
    
    
    'インプットボックス入力してもらう
    Do
        result = InputBox( _
                            Prompt:="年齢を入力してください", _
                            Title:="年齢入力" _
                            )
        If result = "" Then
            MsgBox "必ず入力してください"
        End If
     Loop While result = ""
             
End Sub

Application.Inputboxの場合

Application.Inputboxの場合、キャンセルされた場合、Falseが返ってきます。

入力されるまで続けてほしい場合
Sub testInput()

    '変数の宣言
    Dim result As Variant
    
    
    'インプットボックス入力してもらう
    Do
        result = Application.InputBox( _
                            Prompt:="年齢を入力してください", _
                            Title:="年齢入力" _
                            )
        If result = False Then
            MsgBox "必ず入力してください"
        End If
     Loop While result = False
             
End Sub
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次