重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Sub test1()
Dim tmp As String
tmp = Application.InputBox("testです")
End Sub
Sub test2()
Dim tmp As String
tmp = InputBox("testです")
End Sub

この二つのコードを比較すると、
test1の方は、ダイアログボックスのタイトルに「入力」が表示され、
四角いインプットボックスが表示されます。

test2の方は、私がいつも使っているインプットボックスなのですが、
「tmp =」と 「InputBox」の間に何かコードが省略されてるのでしょうか?

Application.を付ける事によって、形が変わってしまうのでしょうか?

また、オブジェクトブラウザを見ると
【1】Function InputBox(Prompt As String, [Title], [Default], [Left], [T
Excel.Application のメンバ

【2】Function InputBox(Prompt, [Title], [Default], [XPos], [YPos], [Help
VBA.Interaction のメンバ

がありましたが、
test1、test2それぞれどちらの事なのでしょうか?

A 回答 (2件)

InputBox("testです")


というのは、VBAの関数です。また、古くからあるもので、簡単なものにしか使いません。
また、戻り値が、特殊だったりするので、今ひとつ、使い勝手がよくありません。
例えば、[ESC]を押された時は、特殊な古い関数が必要だったりします。

Application.InputBox("testです")
というのは、Application(= Excel) のメソッドです。ダイアログボックスで、応用力を持たせたいと思えば、Application.InputBox を使います。私は、VBAで、マクロを組む時は、後者のメソッド側を使います。

慣れないうちは、少し難しい部分が出てきます。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/04/13 19:49

Application.InputBoxとInputBoxは実は、それを動かしている物自体が


まったく別なんですよね。

http://officetanaka.net/excel/vba/tips/tips37.htm
の当たりが参考になるでしょう。
簡単な文字入力程度でしたら
InputBoxで十分ですが、数値のみ入力させたいとかあったら
Application.InputBox
を使うことになります。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/04/13 19:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!