質問: "" then msgbox "未入力" & typename(ans) call test002 elseif not isnumeric(ans) then msgbox "数値ではありません。" & typename(ans) call test002 elseif ans < 0 then msgbox "負数は不可。" & typename(ans) call test002 else msgbox ans & "を受け取りました。" & typename(ans) end if end sub あと、もうひとつ質問は、数値以外の入力があった場合、再度入力させるためいちいちcall test002 を入れてますが、このやり方でただしいのでしょうか?
回答: こんばんは。 たぶん、もうお気づきかとは思いますが、一応念のため。 このコードの正式な書き方は分かりません。ただ、プログラムの歴史の中で、こういうスタイルで構造化プログラムができるようになって、環境が激変したというそうです。 '// sub test003r() dim ans as variant dim msg as string do ans = application.inputbox("数値を入力" & vbcr & msg) if vartype(ans) = vbboolean then '←あくまでも、inputbox の次に置きます。 msgbox "キャンセル" exit sub end if if isnumeric(ans) and val(ans) >= 0 then exit do msg = "正しい数値(>=0)を入れてください。" loop if ans <> "" then msgbox ans end if end sub '//