掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
エクセルから、書式設定を変更せずに、日付シリアルを取得するには? (ID:100508)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Value2を知らなかった Value2 の定義は、Excel のバージョンによって引数定義が異なりますので注意してください。 (実行環境と開発環境の Excel バージョンを一致させておかないと、問題が発生する事があります) ちなみに、VB側での日付シリアル変換は Debug.Print CDbl(#3/27/2008#) '39534.0 Debug.Print CDate(39534) '2008年3月27日 のように書けますので、Value2 が使えなくとも、VB側で変換は可能です。 > エクセルのセルに入力された日付と同じ日付が帰ってきます。 Excel の日付シリアルと、VB の日付シリアルが別物であるのは確かですが、 かんとくさんは、2 つの点を誤解しておられるようです。 まず、『日付シリアルが1日ずれてしまう』というのが誤解です。 2008/03/27 のシリアル値は一緒です。 > この掲示板の以前の書き込み > http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200503/05030091.txt > を見てみると、 そこに書かれているのは、Excel側の日付は、 99/12/31 …非対応の日付 100/01/01 …非対応の日付 : : 1899/12/29 …非対応の日付 1899/12/30 …非対応の日付 1899/12/31 …非対応の日付 1900/01/00 …シリアル値 0 1900/01/01 …シリアル値 1 : : 1900/02/28 …シリアル値 59 1900/02/29 …シリアル値 60 ★そのURLにて問題視されている部分 1900/03/01 …シリアル値 61 : : 9999/12/31 …シリアル値 2958465 10000/01/01 …非対応の日付 のようになっていますが、VBの日付シリアルは、 99/12/31 …非対応の日付 100/01/01 …シリアル値 -657434 : : 1899/12/29 …シリアル値 -1 1899/12/30 …シリアル値 0 1899/12/31 …シリアル値 1 1900/01/00 …★存在しない日付★(0日は存在しない) 1900/01/01 …シリアル値 2 : : 1900/02/28 …シリアル値 60 1900/02/29 …★存在しない日付★(1900年は閏年では無い) 1900/03/01 …シリアル値 61 : : 9999/12/31 …シリアル値 2958465 10000/01/01 …非対応の日付 のようになっています。 つまり、ごく狭い日付範囲では、確かに 1 日ずれている部分もありますが、 常用される範囲、シリアル値61〜2958465の範囲(1900/03/01以降)については、 ずれは発生していないということです。 もう一つの誤解は、日付シリアルと日付の換算についてです。 VB の日付シリアル値は、Calendar プロパティの内容で変化します。 たとえば、今回使おうとしている CDate(39484) の結果は、 Calendar = vbCalGreg なら、2008年2月6日 を示しますが、 Calendar = vbCalHijri は、1429年1月29日 を示します。 なお、既定の設定は vbCalGreg (グレゴリオ暦)です。 一方、Excel の日付シリアル値は、オプション設定画面にある 「1904 年から計算する」の設定によって変化します。 VBA でいえば、ブックの Date1904 プロパティですね。 既定では、これは Off になっています。 このような違いもありますから、日付をシリアル値として扱うのであれば、 どのモードで変換しようとしているのかを、正しく認識する必要があるでしょう。 以上の点を踏まえて、あらためて確認なのですが: >> 当方の Excel では、日付シリアル 39484 といえば >> 2008/2/6 … Date1904 プロパティが False のとき >> 2012/2/7 … Date1904 プロパティが True のとき >> のいずれかになるのですけれども。 かんとくさんの環境の Excel では、39484 は上記の日付にはならず、 2008/3/27 を示していたのですよね? Date1904 の設定はどうなっていましたか? >>> 2008/3/27 という値が入っているとして、そのセルの書式設定→表示形式→分類を標準にすると、 >>> セルの表示が日付シリアル(39484)に変わります。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.