1399454432 Excelのマクロを組んでいてふと気づきました。


Date型として宣言した変数をウォッチリストに入れて観察していると、Variant/Dateとなっています。
これはVariant型なのでしょう?Date型なのでしょうか?

あと、本来Date型は時刻も含むものとの認識だったのですが、この変数の場合、日付の部分だけで時刻が含まれていません。

Dateと宣言したにもかかわらず、Variant/Dateとなり、時刻が無視される理由について、また時刻まで含めて定義する方法についてご存じの方がいましたらご教授願います。

Googleで検索した限りでは、VariantかつDate型、よくわからないけどそういうものとして覚えておく、という書き込みがありました。
そういうものなのはわかるのですが、なぜそのようになっているのかということと、
時刻まで含まれないことはVariant/Date型と関係あるのか、あるにしても無いにしても、日付と時刻をひとまとめに扱う方法はないのか、について質問します。

回答の条件
  • URL必須
  • 1人5回まで
  • 13歳以上
  • 登録:2014/05/07 18:20:32
  • 終了:2014/05/08 05:49:19

ベストアンサー

id:watercooler No.2

井戸端さん回答回数289ベストアンサー獲得回数512014/05/07 19:29:17

ポイント150pt

便宜上VARIANT型といってるけどほんとはVARIANT構造体といって文字列型や日付型などのデータ型とは次元の異なる存在なの。

VARIANT構造体にはデータ型とデータが格納されているの。
VARIANT型の変数になにかを代入すると自動的にデータ型判別されて内部処理形式DateのVARIANTなどになるわけ。
だからDim a AS dateに日付型データを入れることができることと同様にDim aにも日付型データを入れることができちゃうの。

Variant型とは 〔 バリアント型 〕 - 意味/解説/説明/定義 : IT用語辞典

Variant型の変数は代入時に代入する値のデータ型がチェックされ、それに合うデータ型が自動的に選択される。

その他の回答(1件)

id:sasada No.1

sasada回答回数1482ベストアンサー獲得回数1332014/05/07 18:38:55

ポイント150pt

 date型変数は日付と時刻を保存できます。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/function/vba_date.html

 ただ、日付と時刻を同時に取得するときはDate()関数ではなくNow()関数を使ってください。
http://officetanaka.net/excel/vba/tips/tips59.htm

 date型は日付時刻を表すシリアル値が入っています。このため、Variant型としても取り扱えるのでVariant/Date型になっているのではないでしょうか。

id:watercooler No.2

井戸端さん回答回数289ベストアンサー獲得回数512014/05/07 19:29:17ここでベストアンサー

ポイント150pt

便宜上VARIANT型といってるけどほんとはVARIANT構造体といって文字列型や日付型などのデータ型とは次元の異なる存在なの。

VARIANT構造体にはデータ型とデータが格納されているの。
VARIANT型の変数になにかを代入すると自動的にデータ型判別されて内部処理形式DateのVARIANTなどになるわけ。
だからDim a AS dateに日付型データを入れることができることと同様にDim aにも日付型データを入れることができちゃうの。

Variant型とは 〔 バリアント型 〕 - 意味/解説/説明/定義 : IT用語辞典

Variant型の変数は代入時に代入する値のデータ型がチェックされ、それに合うデータ型が自動的に選択される。

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません