- ベストアンサー
VBAのinputboxで何もいれずに[OK]を押した時エラーになる理由と解決方法
- VBAのinputboxで何も入力せずに[OK]を押すとエラーが発生します。これは、VBAのinputboxが空の値を受け入れないためです。解決方法の一つは、入力が行われたかどうかを確認することです。入力がない場合は別の処理を実行するように条件分岐を行うことができます。
- 具体的な解決方法として、inputboxの戻り値を変数に格納し、その変数が空の場合にエラーメッセージを表示する方法があります。また、myAnsがNothing(キャンセル)となる場合と、myAnsが空文字列(何も入力されていない)となる場合で処理を分岐することもできます。
- 例えば、myAnsがNothingの場合にはメッセージボックスに「キャンセル」と表示し、処理を終了するようにします。また、myAnsが空文字列の場合には「最低1つは選択してください」と表示し、処理を終了するようにします。それ以外の場合には、myAnsのアドレスを表示するようにします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
テキスト形式で受け取っては? Dim myAns As Range Dim Txt Txt = Application.InputBox(~, Type:=2) If Txt = False Then MsgBox "キャンセル" Exit Sub End If If Txt = "" Then MsgBox "最低1つは選択してください" Exit Sub End If Dim Ecode As Long On Error Resume Next Set myAns = Range(Txt) Ecode = Err.Number On Error GoTo 0 If Ecode <> vbNormal Then MsgBox "セルの指定が間違っています" Exit Sub End If MsgBox myAns.Address(0, 0)
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1415)
InputBoxのType:=8はそういう仕様なんです。 セルを選択する書式を入れるか、止めるかしかないのです。 空欄でOKとは何を意味していますか?何を期待しているんですか? 単に「止める」ならキャンセルボタンがあるので、用は足りていると 思いますが・・・
お礼
さっそく回答いただきありがとうございます。 >InputBoxのType:=8はそういう仕様なんです。 そうなんですか・・・残念です。 >空欄でOKとは何を意味していますか?何を期待しているんですか? 私が使うのでなく、複数で使うため、そのようにしてしまう人がいるかと思い、せめてメッセージでも出せたらなと思った次第です。 すいません。 「入力した数式は正しくありません」のエラーメッセージが出ればわかるかもしれませんね。
お礼
さっそくの回答ありがとうございます。 できました~~~! ずーと解決できずに悩んでいたので本当にうれしいです。 感謝です。 ありがとうございました。