|
▼hisao さん、IROCさん、こんにちは。
>すみません。初歩的なことで又教えてください。
>inputboxに入れる変数がdateの場合、
>キャンセル等の場合
>if A="" then とするとエラーになりますね。
と言う事は、ApplicationのInputboxメソッドではなく、
関数のInputboxを使用していると言うことですね?
これって、「キャンセル」を押すと、""が戻り値として返されてしまいますから、
基本的には、受け側の変数をDate型では厳しいですよね。
一度、String型の変数で戻り値を受ける方法等をとらなければなりませんね!!
でも、正確には、これでも厳しいんですよ。
「キャンセル」が押されたときと 何も入力せずに「OK」が押されたときの
区別が付きませんから・・・・。
もっともこの場合は、同じと見なしてもたいした事はなさそうだけど・・。
>キャンセルした場合処理を分岐するには どうすれば宜しいでしょうか。
冒頭に記述したようにこういう場合は、Inputbox関数ではなく、
ApplicationのInputboxメソッドを使用する方が多いようですよ!!
正確には、Vatiant変数で受けてBoolean型か否かで判断するのですが、
'==============================================
Sub test()
Dim ans As date
ans = application.InputBox("日付入力してね", Type:=1)
If ans <= 0 Then
MsgBox "値は、無効"
Else
MsgBox ans
End If
End Sub
こんなんでもよいでしょうか?
上記コードは、「キャンセル」を押したときと「0」を入力して「OK」を押したときは
同じように無効になってしまいますが・・・。
|
|