ユーザーの入力を文字列で取得する(InputBox関数)
 InputBox関数は、ダイアログボックスを表示してユーザーに値の入力を
要求し、入力された値を文字列として取得する関数です。引数Xpos、Ypos
ではダイアログボックスを表示させる場所を指定することができます。
 どちらか一方だけでも省略した場合には、水平方向には画面中央、垂直
方向には画面の3分の1の場所に表示されます。また、関連付けたヘルプを
表示させたい時には、引数HelpFileとContextで設定します。


  構文 InputBox(Prompt, Title, Default, Xpos, Ypos, HelpFile, Context) 

 設定項目        内容
  Prompt     ダイアログボックスに表示するメッセージを指定 [省略不可]
  Title      ダイアログボックスのタイトルバーの文字列を指定 [省略可能]
  Default     テキストボックスに表示する既定値 [省略可能]
  Xpos      左端の位置を画面左端からの距離(twip単位)で指定 [省略可能]
  Ypos      上端の位置を画面上端からの距離(twip単位)で指定 [省略可能]
  HelpFile    ヘルプを設定する場合の、ヘルプファイルの名前を指定 [省略可能]
  Context     表示したいヘルプトピックを表すコンテキスト番号を指定 [省略可能]


 次のサンプル1は、アクティブシートの名前をユーザーに設定させるものです。

●サンプル1●

Sub InputBoxSamp1()

    Dim myStr As String

InputSheetName:
    On Error GoTo ErrHandle
    myStr = InputBox(Prompt:="シート名を入力してください", _
        Default:=ActiveSheet.Name, Title:="シート名入力", XPos:=0, YPos:=0)
    '---(1)キャンセル時の処理
    If myStr = "" Then
        MsgBox "キャンセルされました", vbInformation
    '---既定値以外の文字だった場合
    ElseIf myStr <> ActiveSheet.Name Then
        MsgBox "シート名を" & myStr & "に変更します", vbInformation
        ActiveSheet.Name = myStr
    End If
    Exit Sub

ErrHandle:
    MsgBox Err.Description & String(2, 13) & "再度入力してください", vbCritical
    '---入力をやりなおし
    Resume InputSheetName                     

End Sub


●解説●
 サンプルを実行すると入力用のダイアログが、画面左上端に現れます。既定値
としては、アクティブシートの名前が入っています。

 仮にこのままOKボタンを押した場合には、変数myStrには、既定値としてテキスト
ボックスに反転表示されている文字列が代入されます。キャンセルボタンを押すか、
左上の[×]ボタンでダイアログが閉じられた際には、長さ0の文字列("")が代入され
ます。従って、キャンセル時の処理は、(1)のステートメントのような記述となります。


●ポイント●
 InputBox関数と間違いやすい機能にInputBoxメソッドがあります。両者を比較す
るとInputBox関数の方が低機能ですが、文字列の入力だけであれば、こちらで十分
対応できると思います。逆に、数値データだけ入力させたい、というようなケース
には、InputBoxメソッドの方がよいでしょう。ケースに応じて使い分けてください。

Excel2000



戻る


Excel Word Access VBA! モーグ