Excel VBA質問箱 IV

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

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


75723 / 76738 ←次へ | 前へ→

【5447】Re:DateDiff が どうしてもできない
回答  Taka-mk2  - 03/5/14(水) 14:40 -

引用なし
パスワード
   ▼123 さん:
新緑の季節の昼下がり。
まだまだお昼の東京から。

問題は、以下の部分。

>TextBox1.Value = Format(TextBox1.Value, "gee.mm.dd")
>tdate = TextBox1.Value

ここでテキストボックスの日付表示をgee.mm.dd形式に変更していますよね。
この形式の文字列を、VBAは日付型として認識しません。
IsDate関数を使用して調べてみると、Falseが返ってきます。
DateDiff関数は日付型の変数を扱うので、日付型ではないgee.mm.dd(おそらくString型として扱われている)が引数になると、「型が一致しません」というエラーが出ますよね。
これが原因です。

なので、
>TextBox1.Value = Format(TextBox1.Value, "gee.mm.dd")
この部分をなくして、yyyy/mm/dd形式などで入力してもらうようにするのがベストかと思います。

もしくは、以下のように

Dim tdate As Variant
Dim ddate As Variant

Private Sub CommandButton1_Click()

For i = 1 To 10
ddate = Cells(i, 1).Value

Cells(i, 2).Value = DateDiff("yyyy", tdate, ddate)

Next i

End Sub


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

tdate = TextBox1.Value
TextBox1.Value = Format(TextBox1.Value, "gee.mm.dd")

End Sub

このようにして、変換する前にテキストボックスの日付型をGetしてしまえば、問題はないと思われます(こっちはテストしてません^^;)。

以上、ご参考になれば!
それでは!
4 hits

【5444】DateDiff が どうしてもできない 123 03/5/14(水) 12:37 質問
【5445】Re:DateDiff が どうしてもできない Taka-mk2 03/5/14(水) 12:48 発言
【5446】Re:DateDiff が どうしてもできない 123 03/5/14(水) 13:43 質問
【5447】Re:DateDiff が どうしてもできない Taka-mk2 03/5/14(水) 14:40 回答
【5448】追記! Taka-mk2 03/5/14(水) 14:41 回答
【5467】Re:DateDiff が どうしてもできない 123 03/5/15(木) 11:10 質問
【5478】Re:DateDiff が どうしてもできない Taka-mk2 03/5/15(木) 13:19 回答
【5483】Re:DateDiff が どうしてもできない JuJu 03/5/15(木) 15:11 回答
【5490】Re:DateDiff が どうしてもできない りん 03/5/15(木) 17:09 回答
【5512】これで ひとつ 仕事が終わりました。 123 03/5/16(金) 17:51 お礼

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