• ベストアンサー

Date関数で書いた日付がおかしい

VBAでエクセルのフォームを作成しています。 Date関数を使って、セルに直接日付を入力している箇所が2箇所あるのですが、そのうちの1箇所だけが12年ずれてしまいます。(2002/3/6→1990/3/6) また、これは使用するマシンの環境によっても異なるのか、発生するマシンとしないマシンがあります。 ちなみに、試したのは下記のとおりです。(カッコ内は調査台数)  ・Win2000/Excel2000=問題なし(1台)  ・Win2000/Excel97=問題なし(1台)  ・WinNT/Excel2000=問題なし(2台)  ・WinNT/Excel97=上述の問題あり(5台) アプリケーション要因かとも思うのですが、おかしいのは2箇所のうち1箇所だけなのも引っ掛かります。 どうしたら直るのでしょう? どなたか、お助けください。m(__)m

質問者が選んだベストアンサー

  • ベストアンサー
  • yuyama
  • ベストアンサー率50% (7/14)
回答No.3

同じようなことかな?と思いひとこと。 Windowsの日付には短い形式、長い形式があり、 短い形式を'yy/mm/dd'とすると、 あるプログラムが異常になることがありました。 見てはいかが? 関係なかったらごめんなさい。

yoshiyoshi
質問者

お礼

Windows側の設定だったんですね。 VBAやExcelにばかり目が行き、気付きませんでした。 解決です。ありがとうございました。 m(__)m

その他の回答 (3)

  • wnm
  • ベストアンサー率48% (23/47)
回答No.4

”12年”前の日付が入るということは、どこかで和暦に変更されているしか考えられません。 参考URL中の [Excel97] 日付の 2 桁入力と和暦入力について [Excel97] 日付をコピー貼り付けすると誤って入力される ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [Excel97]Excel 97 日付関数検査ウィザード [Excel97]Excel 97 日付入力監視ウィザード 等の情報を確認されたらいかがでしょうか。 特に2番目のものが怪しいのではと思うのですが。 (プログラム中で、複数のシート間でコピ・ペしており、かつ、ペースト時にコピー元のシートを閉じているとエラーが発生する...の記載があります) また、1番目の記事のレジストリのどちらが適用されているか確認されることも必要かと思います。 これ以上は、ソースを見ないと判りません。 お役に立てなければすみません

参考URL:
http://www.hitachi.co.jp/Prod/comp/OSD/y2k/pc_soft/ms/MS-Y2KSP.htm
  • wnm
  • ベストアンサー率48% (23/47)
回答No.2

追伸: 恐らく、和暦として扱われていると思います。Date関数で競っているする年の所を4桁にすれば開家鶴すると思います。 機械が"2/3/6"を勝手に"平成2年3月6日"と扱っているのだと考えられます。 参考URLの一番下のほうQ&Aが回答になりませんか?

参考URL:
http://www2s.biglobe.ne.jp/~iryo/vba/y2k/y2k2.html
yoshiyoshi
質問者

補足

お手数をおかけいたしております。m(__)m 桁数に関しては、いろんなところで2桁だと問題が起こる可能性が高いことを聞いてましたんで、4桁で入力するようにしています。

  • wnm
  • ベストアンサー率48% (23/47)
回答No.1

1.WinNt, Excel97のSP/SRの適応状況及び、Y2Kパッチの当て具合をまず御確認下さい。 2.問題が無ければ、代入する直前に、BreakPointを設定して、代入する値の確認を行うお願いします。 一般に上記2つを確認する事で、解決すると思います。

参考URL:
http://www.microsoft.com/JAPAN/support/tdoc/y2k/Y2KJ_2.asp
yoshiyoshi
質問者

お礼

早々からのご回答、ありがとうございました。 おかげさまで解決いたしました。

yoshiyoshi
質問者

補足

1.は次のとおりです。  Win2000/SP2  WinNT/SP6a  Excel2000/SP-2  Excel97/SR2 どれも最新のパッチですよね?(少なくともY2K問題はないはずです) 2.も既に確認済みで、問題のある箇所は、代入される時点でおかしな値です。 質問にも書きましたが、同じフォームの中で1箇所は正規の値が代入され、もう1箇所は間違った値になるのは何故なんでしょう?

関連するQ&A