- ベストアンサー
VBAのDateの違い
VBAのDateの違いについてわからないので教えてください。 MsgBox Date MsgBox DateValue(Date) この二つは 2009/5/18 と同じ結果が返るのですが 何が違うのでしょうか? 「こういうときはこっちを使ったほうがいい!」 と言うのがあったら知りたいです。 また MsgBox Date$ は 2009-5-18 で Stirng型でした。 多分これは日付を文字列型で返したいときに使うのだと思います。(多分、、、) よろしくお願いします。
- みんなの回答 (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を返し 下手に、自動型変換使用しないで、動作させるように作るのが一般ですけどね
その他の回答 (2)
- bonaron
- ベストアンサー率64% (482/745)
> MsgBox Date > MsgBox DateValue(Date) 分かりにくい例を挙げていますね。 MsgBox Now MsgBox DateValue(Now) これなら DateValue関数のイメージが分かりやすいでしょう。 詳しくは、DateValue にカーソルを置いて [F1]キーを押してみてください。
お礼
わかりにくいのを使ってたのですね。ありがとうございます。
- noah7150
- ベストアンサー率46% (116/251)
この質問ではどのような回答を求めているのかが分かりませんねぇ。 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日") などと表示内容に合わせて必ず書式を付きで書きますけどね
お礼
ありがとうございます。
お礼
ありがとうございます。