Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


64540 / 76732 ←次へ | 前へ→

【16772】Re:inputboxのキャンセルについて
回答  ichinose  - 04/8/9(月) 15:40 -

引用なし
パスワード
   ▼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」を押したときは
同じように無効になってしまいますが・・・。

0 hits

【16769】inputboxのキャンセルについて hisao 04/8/9(月) 15:09 質問
【16770】Re:inputboxのキャンセルについて IROC 04/8/9(月) 15:13 回答
【16771】Re:inputboxのキャンセルについて つん 04/8/9(月) 15:32 発言
【16772】Re:inputboxのキャンセルについて ichinose 04/8/9(月) 15:40 回答
【16777】Re:inputboxのキャンセルについて hisao 04/8/9(月) 16:43 お礼

64540 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free