プロが教えるわが家の防犯対策術!

Sub test()
InputBox "テスト", "TEST"
End Sub

上記のInputBox関数を実行したときに表示されるキャンセルボタンを
不活性化させることは可能でしょうか
ご存じの方ご教授頂きますようお願い致します
OKボタンは活性化されたままで構いません

A 回答 (4件)

効果としては


Sub test01()
p1:
a = InputBox("a=")
If a = "" Then GoTo p1
End Sub
で良いのでは。
笑わば笑え~♪
関数は人の作ったプログラムで、一般に、そういうものを、任意の部分を自分流に修正するのは(操作でも、VBA程度のプログラムでも)できない。(引数ででも設定してない限り。)
VBAのレベルでは、自分でコントロールを作るよりないと思う。
    • good
    • 0

こんばんは。



>不活性化とはボタンは表示されているけど、押せない状態のことです

不活性化というのは、Enabled =False のことだと思います。UserFormなど、いろいろ経験されたほうがよいと思います。また、InputBox メソッド側を使い、InputBox 関数は、あまり使用されません。

InputBox関数は、もっとも単純なコントロールです。VBAコードでは、InputBox 関数のキャンセルボタンをEnabled というような発想はありえないとは思います。

以下のように、DialogSheetで、InputBox と見分けがつかないほどに、そっくりに作ることは可能です。なおかつ、キャンセルボタンを、Enabled=False にすることは可能です。

DialogSheetを、ひとつ設けて、そこに、Label と EditBox を設ければよいです。なお、DialogSheetは、最後に非表示にします。

ただし、DialogSheet の設け方とか分からないようでしたら、手をつけないほうがよいと思います。それほどのものではありません。こういうのは、かなり、マニアックというのがふさわしいような気がします。ユーザー側には、マクロはロックしてあれは、これは、一体、どうやっているのだろう、と思わせるような内容です。DialogSheet は、通常は、非表示にしておくものですから、このオブジェクトは見つかりません。

'標準モジュール

Sub TestDialogBox()
 With DialogSheets(1)
  .DialogFrame.Caption = "TEST"
  .Labels(1).Caption = "テスト"
  .EditBoxes(1).Text = ""
  .Buttons(2).Enabled = False 'キャンセルボタン
  .Show
 While .EditBoxes(1).Text = ""
  .Show
 Wend
 End With
  MsgBox .EditBoxes(1).Text
End Sub
    • good
    • 0

こんばんわ


>不活性化させることは可能でしょうか
不活性化させるとは、何もしないといういみでしょうか?
このような感じでしょうか。

Sub test()
RES = InputBox("テスト", "TEST")
IF RES= VBOK THEN
’ココになにかしらの作業
ELSEIF RES = "" THEN’空欄でOKを含みます
EXIT SUB
END IF
End Sub

この回答への補足

早速の回答ありがとうございます
不活性化とはボタンは表示されているけど、押せない状態のことです

補足日時:2007/03/02 00:01
    • good
    • 0

Do Loopで如何でしょう。


何か入力しないと閉じませんが。
あとは、UserFormで作成するとか。

Sub Test()
Dim myIpb As String
Do
   myIpb = InputBox("テスト", "TEST")
Loop While myIpb = ""
MsgBox myIpb
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます
教えて頂いたロジックをベースにするか、UserFoamで作成する
などしてみます

お礼日時:2007/03/02 00:12

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