VBAのDateの違いについてわからないので教えてください。

MsgBox Date
MsgBox DateValue(Date)

この二つは
2009/5/18
と同じ結果が返るのですが
何が違うのでしょうか?

「こういうときはこっちを使ったほうがいい!」
と言うのがあったら知りたいです。

また
MsgBox Date$

2009-5-18

Stirng型でした。
多分これは日付を文字列型で返したいときに使うのだと思います。(多分、、、)

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

自動的に型変換しているだけだと^^;



> MsgBox Date
> MsgBox DateValue(Date)
> MsgBox Date$



MsgBox IsDate(Date)
MsgBox IsDate(DateValue(Date))
MsgBox IsDate(Date$)

で、やれば、すべてTrueを返します
1つづつ話せば、
Date = Variant/Date型
DateValue(Date) = 中のDateをVariant/Date型からVariant/String型に変換後、DateValue関数で、シリアル値Variant/Date型を戻す
Date$ = Variant/String型
IsDate(Date$) = Variant/String型をVariant/Date型に変換後、Trueを返し
下手に、自動型変換使用しないで、動作させるように作るのが一般ですけどね
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2009/05/19 22:49

> MsgBox Date


> MsgBox DateValue(Date)
分かりにくい例を挙げていますね。

MsgBox Now
MsgBox DateValue(Now)
これなら DateValue関数のイメージが分かりやすいでしょう。

詳しくは、DateValue にカーソルを置いて [F1]キーを押してみてください。
    • good
    • 0
この回答へのお礼

わかりにくいのを使ってたのですね。ありがとうございます。

お礼日時:2009/05/19 22:49

この質問ではどのような回答を求めているのかが分かりませんねぇ。



Date、Date$はシステム日時を取得するものですが
Dateは日付型で(調べてないが多分)返す
Date$は文字列で yyyy-m-d 編集して返す
DateValue(x)はxを日付型変換する関数です、xには日付に変換できるものならどんな型を設定していてもかまわないのですが
文字列で/や年月日なの文字を入れての編集されている文字列を指定が一般的ですけど

なのでDateValue(Date)と書くのはまったく意味の無い話と思いますけど


日付などはDateTimeとして内部では日付部分は整数、時刻を少数として持っていますから
DateVaueで得られる日付値を直接表示しても分からないのでMsgBox関数は自動的に文字列に変換されます
標準ではシステムの設定でyyyy/m/dが選択されているからそうなるだけで
設定を変更すればyyyy-m-dに変更することも可能だったと思います

>「こういうときはこっちを使ったほうがいい!」
これは考え方次第
私なら
MsgBox Format(Date, "yyyy年mm月dd日")
などと表示内容に合わせて必ず書式を付きで書きますけどね
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2009/05/18 22:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング