これ何て呼びますか Part2

VBA初心者です。
Application.InputBox(メソッド)で、キャンセルが選択されたら処理を終了し、数値が入力されたら計算をしたいのですが、ゼロを入力した場合にFalseと見なされて処理を終了してしまいます。ゼロを入力しても処理を続けるには、どのように記述すれば良いのでしょうか?よろしくお願いします。

A 回答 (2件)

こんな感じでは



Sub aaa()

Dim ret As String


ret = Application.InputBox("数字を入力下さい", , , , , , , 2)

If ret = "" Then
MsgBox "何も入力されていません"
ElseIf ret = "False" Then
MsgBox "キャンセルボタンが押されました"
ElseIf ret = "0" Then
MsgBox "0が入力されました"
ElseIf IsNumeric(ret) = False Then
MsgBox "文字が入力されてします" & vbCrLf & ret
Else
MsgBox "数字です" & vbCrLf & ret
debug.print val(ret)

End If



End Sub

戻り値 Retを数字として受けるのではなく文字で受ければFalseも分かります。
    • good
    • 1
この回答へのお礼

なるほど!アドバイスを参考に記述したところ、目的とする結果が得られました。ありがとうございました。

お礼日時:2005/10/25 12:54

0はFalseを数値で表した場合の値です。


逆にTrueは0以外です。

InputBox()は、OKですと、入力された値を返します。
キャンセルですと、空白文字を返します。

つまり、判定はTrue/Falseではなく、""かどうかという判定になります。
但し、OKを押した場合にも、入力値が無ければ""となります。
    • good
    • 1
この回答へのお礼

Application.InputBoxと記述した場合にはExcel VBAのInputBoxメソッドを意味し、InputBoxと記述した場合にはVisual BasicのInputBox関数を意味すると理解しています。それぞれのキャンセルの意味は、
InputBoxメソッドのキャンセル=False=0
InputBox関数のキャンセル=""
と言うことですね?
作成中のマクロでは、InputBoxメソッドを使用したいのですが・・・

お礼日時:2005/10/25 11:36

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A