アクセス上位ページ
 
最近の更新内容
(1)-a.InputBox関数 ⇐ [PREV]
[NEXT] ⇒ (1)-c.MsgBox関数

Excel VBA ≫ 2.関数リファレンス - 組み込みダイアログ(1)-b.InputBoxメソッド

組み込みダイアログ - Application.InputBox

InputBox関数と似たインタフェースとしてApplication.InputBoxがあります。 これは関数ではありません(ApplicationオブジェクトのInputBoxメソッドです)が、InputBox関数とだいたい同じような機能を提供していますのでここで説明します。



Application.InputBoxはInputBox関数と同様、マクロ実行中にユーザーからのデータ入力を受け付けるダイアログボックスです。 InputBox関数との主な違いは入力データタイプを指定する引数Typeが指定可能になっているところです。 また、ダイアログボックス上のボタン配置なども若干異なります。

InputBox関数、InputBoxメソッドの主な相違点
相違点 InputBox関数 InputBoxメソッド
入力データの
タイプ指定
不可能 可能
入力キャンセル時の
戻り値
値0の文字列 False
ボタン配置 右上 右下

  • 【構文】
    Application.InputBox (Prompt [, Title] [, Default] [, Left] [, Top] _
     [, HelpFile] [, HelpContextID] [, Type])

      【戻り値】 バリアント型 (Variant)

  • 引数名 省略 説明
    Prompt × 必須入力です。ダイアログ ボックス内にメッセージとして表示する文字列を示す文字列式を指定します。 改行するにはvbCr、vbLf、vbCrLfのいずれかを使用します。
    Title ダイアログ ボックスのタイトルを指定します。 省略すると、既定値の "入力" がタイトル バーに表示されます。
    Default テキスト ボックスに既定値として表示する文字列式を指定します。
    Left パソコン画面の左上隅を基準として、ダイアログ ボックスの X 座標をポイント (印刷する文字のサイズ (高さ) を指定する基本単位。)単位で指定します。
    Top パソコン画面の左上隅を基準として、ダイアログ ボックスの Y 座標をポイント単位で指定します。
    HelpFile この引数は、表示するダイアログ ボックスの説明を、ヘルプを使って表示するときに指定します。 使用するヘルプ ファイルの名前を示す文字列式を指定します。 引数 helpfile を指定した場合は、引数 context も指定する必要があります。
    Context ヘルプ トピックに指定したコンテキスト番号を表す数式を指定します。 引数 context を指定した場合は、引数 helpfile も指定する必要があります。
    Type 返されるデータの型を指定します。 省略すると、ダイアログ ボックスは文字列 (テキスト) を返します。


    引数Typeには次の値のいずれか 1 つまたは合計値を指定できます。 例えば、文字列と数値を入力可能にしたい場合は、引数Typeの値を 1 + 2 = 3 に設定します。

    引数Typeに指定可能な値
    説明
    0 数式
    1 数値
    2 文字列 (テキスト)
    4 論理値 (True または False)
    8 セル参照 (Range オブジェクト)
    16 #N/A などのエラー値
    64 数値配列

  • 引数Prompt、Title、Defaultの表示位置
  • Sub sample_ef012_01()
        Dim strData    As String
    
        strData = Application.InputBox( _
                        "ここが引数promptです。" & vbLf & "(必須入力)", _
                        "ここが引数titleです。", _
                        "ここが引数defaultです。")
    End Sub
    

    ダイアログボックスの表示画面
  • 省略可能引数のうち、名前付き引数を使用してDefaultとTypeに値を設定する例
  • Sub sample_ef012_02()
        Dim varData     As Variant
    
        varData = Application.InputBox( _
                        "数値または文字列を入力してください。", _
                        Default:=123, _
                        Type:=3)        '数値(1) + 文字列(2)
    End Sub
    

    名前付き引数を使用した例
  • Typeに1(数値)を指定した使用例
  • Sub sample_ef012_03()
        Dim varData     As Variant
    
        '入力キャンセルされるとブール値が返ってくるので、
        'バリアント型変数で受けます。
        varData = Application.InputBox( _
                        "数値を入力してください。", Type:=1)
    
        If TypeName(varData) = "Boolean" Then
            MsgBox "入力がキャンセルされました。", vbExclamation
        Else
            MsgBox "入力された数値は『" & varData & "』です。", vbInformation
        End If
    End Sub
    

    • [キャンセル]または[×]ボタンを押下した場合
    • [キャンセル]または[×]ボタンを押下 入力がキャンセルされました。
    • 文字列を入力した場合
    • 文字列を入力して[OK]ボタンを押下 InputBoxメソッドによりエラーが表示されます。 エラー表示 上記で[OK]ボタンを押下すると再度ダイアログボックスが表示されます。 ダイアログボックス再表示
    • 数値を入力した場合
    • 数値を入力して[OK]ボタンを押下した場合 入力された値は123です。


  • Typeに8(セル参照)を指定した使用例
  • 次のマクロはInputBoxメソッドによりセルの参照を取得し、そのセルへ1からの連番を編集する例です。

    Sub sample_ef012_04()
        On Error Resume Next
        Dim RangeArea   As Range
        Dim wRange      As Range
        Dim i           As Integer
    
        'セル範囲(オブジェクト)の参照をSetステートメントで格納します。
        Set RangeArea = Application.InputBox( _
                        "連番を入力するセル範囲を選択してください。", Type:=8)
    
        '上記の命令ではキャンセルに対応できないので、エラーをトラップします。
        If Err.Number > 0 Then
            MsgBox "処理がキャンセルされました。", vbExclamation
            End     '処理終了
        End If
    
        '連番を編集
        i = 1
        For Each wRange In RangeArea
            wRange.Value = i
            i = i + 1
        Next
    End Sub
    

    • 参照先のセルをマウスで選択
    • 一度セルの参照を行った後、[Ctrl]キーを押しながらセルを参照すると離れた領域も参照することができます。 参照先のセルをマウスで選択
    • セル参照後、[OK]ボタン押下
    • セルを参照して[OK]ボタン押下
カテゴリ内ページ



Page
Top