Excel VBA質問箱 IV

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

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


11314 / 13644 ツリー ←次へ | 前へ→

【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 お礼[未読]

【16769】inputboxのキャンセルについて
質問  hisao E-MAIL  - 04/8/9(月) 15:09 -

引用なし
パスワード
   すみません。初歩的なことで又教えてください。
inputboxに入れる変数がdateの場合、
キャンセル等の場合
if A="" then とするとエラーになりますね。
キャンセルした場合処理を分岐するには どうすれば宜しいでしょうか。

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

引用なし
パスワード
   if A = "False" then
では?

【16771】Re:inputboxのキャンセルについて
発言  つん E-MAIL  - 04/8/9(月) 15:32 -

引用なし
パスワード
   hisao さん、こんにちは

String型で受けておいて、
CDateでDate型にあとで変換する・・というやり方とかどうでしょう?

【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」を押したときは
同じように無効になってしまいますが・・・。

【16777】Re:inputboxのキャンセルについて
お礼  hisao E-MAIL  - 04/8/9(月) 16:43 -

引用なし
パスワード
   ▼ichinose さん:

早速 お返事有難う御座いました。
IROCさん、つんさん、ichinoseさん 有難う御座いました。
特に ichinoseさんのご回答には いつもながら感激しました。

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

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