- 締切済み
InputBox関数でキャンセルボタンを不活性化させたいです
Sub test() InputBox "テスト", "TEST" End Sub 上記のInputBox関数を実行したときに表示されるキャンセルボタンを 不活性化させることは可能でしょうか ご存じの方ご教授頂きますようお願い致します OKボタンは活性化されたままで構いません
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
効果としては Sub test01() p1: a = InputBox("a=") If a = "" Then GoTo p1 End Sub で良いのでは。 笑わば笑え~♪ 関数は人の作ったプログラムで、一般に、そういうものを、任意の部分を自分流に修正するのは(操作でも、VBA程度のプログラムでも)できない。(引数ででも設定してない限り。) VBAのレベルでは、自分でコントロールを作るよりないと思う。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >不活性化とはボタンは表示されているけど、押せない状態のことです 不活性化というのは、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
- Ce_faci
- ベストアンサー率36% (46/127)
こんばんわ >不活性化させることは可能でしょうか 不活性化させるとは、何もしないといういみでしょうか? このような感じでしょうか。 Sub test() RES = InputBox("テスト", "TEST") IF RES= VBOK THEN ’ココになにかしらの作業 ELSEIF RES = "" THEN’空欄でOKを含みます EXIT SUB END IF End Sub
Do Loopで如何でしょう。 何か入力しないと閉じませんが。 あとは、UserFormで作成するとか。 Sub Test() Dim myIpb As String Do myIpb = InputBox("テスト", "TEST") Loop While myIpb = "" MsgBox myIpb End Sub
お礼
ありがとうございます 教えて頂いたロジックをベースにするか、UserFoamで作成する などしてみます
補足
早速の回答ありがとうございます 不活性化とはボタンは表示されているけど、押せない状態のことです