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

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

A 回答 (4件)

同じようなことかな?と思いひとこと。



Windowsの日付には短い形式、長い形式があり、
短い形式を'yy/mm/dd'とすると、
あるプログラムが異常になることがありました。
見てはいかが?
関係なかったらごめんなさい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/03/14 07:50

”12年”前の日付が入るということは、どこかで和暦に変更されているしか考えられません。


参考URL中の

[Excel97] 日付の 2 桁入力と和暦入力について
[Excel97] 日付をコピー貼り付けすると誤って入力される
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[Excel97]Excel 97 日付関数検査ウィザード
[Excel97]Excel 97 日付入力監視ウィザード

等の情報を確認されたらいかがでしょうか。
特に2番目のものが怪しいのではと思うのですが。
(プログラム中で、複数のシート間でコピ・ペしており、かつ、ペースト時にコピー元のシートを閉じているとエラーが発生する...の記載があります)

また、1番目の記事のレジストリのどちらが適用されているか確認されることも必要かと思います。

これ以上は、ソースを見ないと判りません。

お役に立てなければすみません

参考URL:http://www.hitachi.co.jp/Prod/comp/OSD/y2k/pc_so …
    • good
    • 0

追伸:


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

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

この回答への補足

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

補足日時:2002/03/07 08:35
    • good
    • 0

1.WinNt, Excel97のSP/SRの適応状況及び、Y2Kパッチの当て具合をまず御確認下さい。


2.問題が無ければ、代入する直前に、BreakPointを設定して、代入する値の確認を行うお願いします。
一般に上記2つを確認する事で、解決すると思います。

参考URL:http://www.microsoft.com/JAPAN/support/tdoc/y2k/ …

この回答への補足

1.は次のとおりです。
 Win2000/SP2
 WinNT/SP6a
 Excel2000/SP-2
 Excel97/SR2
どれも最新のパッチですよね?(少なくともY2K問題はないはずです)

2.も既に確認済みで、問題のある箇所は、代入される時点でおかしな値です。

質問にも書きましたが、同じフォームの中で1箇所は正規の値が代入され、もう1箇所は間違った値になるのは何故なんでしょう?

補足日時:2002/03/07 07:58
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/03/14 07:51

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVB4でWinNT/Win2K/WinXPに用紙設定

たびたびお世話になってます。

VB4で開発したパッケージソフトの
WindowsXP対応をしています。

WindowsNT、Windows2000、WindowsXPにおいて
専用紙(210ミリ×330ミリ)の印刷がうまくいかなくて
困っています。

サーバーのプロパティでユーザー定義の用紙を追加して
プログラムで用紙をユーザー定義にしても
ぜんぜん反映されません。
反映されたとしてもA3になって結局結果はA4と一緒。。。

リリースが近いので本当に困っています。
わかる方、どうかご教授ください。
お願いします。

Aベストアンサー

256では駄目ですよ。別の値を設定すればうまく行くはずです。
詳しくは参考URLにて

QAccess2000にExcel2000のデータを読み込みたい。

Access上のVBAでExcelよりデータを読み込もうと思います。
最終行を求めるに xlUp を使用しようと思いましたが、

#実行時エラー '1004'
#Rangeクラスの Select メソッドが失敗しました。

となります。

どこをがおかしいでしょうか?


  Dim wb As Excel.Workbook
  Dim ws As Excel.Worksheet

  Set wb = GetObject(C:\abc.xls")  '---オープン確認
  Set ws = wb.Worksheets("Sheet1")

  ws.Range("A65536").Select   '----実行時エラー
  ws.Selection.End(xlUp).Select  
  
  


また、abc.xlsにマクロが含まれているためにマクロを有効にするかどうかの確認メッセージがでます。これを有効、無効どちらでもいいですが、メッセージ無しに開くにはどうすればいいでしょうか?

Aベストアンサー

 Selectメソッドは選択しようとしているセルを含むワークシートがアクティブではないと失敗するため、ほかのメソッドの実行に成功するような場合でもSelectメソッドはエラーになる可能性があります。実際、GetObject関数ではワークブックを非表示状態で開いているため、Selectメソッドが失敗しているのです。このため、Selectメソッドを実行する前に
wb.Application.Windows("abc.xls").Visible = True
としてワークブックを再表示しておく必要があります。

>メッセージ無しに開くにはどうすればいいでしょうか?
 確認メッセージはGetObject関数を実行すると直ちに表示されるので、ActiveXオブジェクトを開いた後に確認メッセージを抑止するための処理を記述する余地はありません。また、GetObject関数はActiveXオブジェクトを開くための汎用的な関数であり、個別のActiveXオブジェクト用のオプションをつけることはできないため、ActiveXオブジェクトを開くときに確認メッセージを抑止する手段もありません。ですから、GetObject関数を使う限りは確認メッセージ無しにExcelワークブックを開くことは不可能だと思います。


 というわけで、素直にDoCmd.TransferSpreadsheetメソッドでテーブルにデータを読み込むのが無難です。
  DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "テーブル名", "C:\abc.xls", False
(末尾のBooleanは、先頭をフィールド名として読み込むのであればTrueにして下さい)

 Selectメソッドは選択しようとしているセルを含むワークシートがアクティブではないと失敗するため、ほかのメソッドの実行に成功するような場合でもSelectメソッドはエラーになる可能性があります。実際、GetObject関数ではワークブックを非表示状態で開いているため、Selectメソッドが失敗しているのです。このため、Selectメソッドを実行する前に
wb.Application.Windows("abc.xls").Visible = True
としてワークブックを再表示しておく必要があります。

>メッセージ無しに開くにはどうすればいいでしょ...続きを読む

QEXCEL2007で動くマクロがEXCEL2000だとエラーが出ます。

下記は、wordの「@一覧表」文字の部分をExcelで作成した表(B3:E9)に置き換えるEXCEL2007で作成したマクロですが、EXCEL2000で動かすと「メソッドまたはデータメンバーが見つかりません」のエラーが出ます。初心者につき、対処方法を教えて下さい。

Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Dim wordRange As Word.Range

Set wordApp = New Word.Application
Set wordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "\ひな型用ドキュメント.docx")
(途中略)
Set wordRange = wordDoc.Content
wordRange.Find.Execute "@一覧表", Forward:=True
Range("B3:E9").Copy
wordRange.PasteAndFormat (Word.wdPasteDefault) ←エラー

*エラーは、wdPasteDefaultで出ます。

下記は、wordの「@一覧表」文字の部分をExcelで作成した表(B3:E9)に置き換えるEXCEL2007で作成したマクロですが、EXCEL2000で動かすと「メソッドまたはデータメンバーが見つかりません」のエラーが出ます。初心者につき、対処方法を教えて下さい。

Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Dim wordRange As Word.Range

Set wordApp = New Word.Application
Set wordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "\ひな型用ドキュメント.docx")
(...続きを読む

Aベストアンサー

エラーは同じ箇所で出るのですか?
Pasteメソッドには引数はないと思いましたたが。Pasteのどこかにカーソルを置いてF1キーを押せばヘルプが見えます。確認してみてください。
もし他の場所にでるなら同様に確認しながら修正する訳ですが、2000と2007の両方で使うなら逆に2007で動くかも確認する必要があります。
判らなくなったらまた質問してください。

QEXCEL97と2002の違いでVBAは?

マイクロソフト製品の手に入れ方で質問です。
PCの調子が悪く仕方なくリカバリーをかけました。リカバリーが成功して問題なく使えるようになったのですが・・・

PCにはもともとプリインでExcel2002など入っていたのですが・・・・CDをなくしてしまいました。
ずっと昔にあった97を今使っていますがどうしても会社のPCと同じ環境にしたいので2002には上げたいのですが買うしか方法は無いのでしょうか?
VBAを使う上で変わっている箇所が無ければよいですが私の記憶ではかなり変わっていたように思います。
どなたかいい方法がございましたらお願いします。

Aベストアンサー

 Microsoft Officeはプリインの場合、CDをなくしちゃった~とかそんな感じでも交換や最入手には応じてくれません。メーカーもプリイン用にMicrosoftから一つずつライセンスを受けているからです。

 現在では、ANo.1の方の言うとおり個人で1ライセンスを購入できるのは2007のみですが、死ぬほどお金を払えば2003も手に入ります(2003のインストールメディアと2003ダウングレード権付きの2007のライセンスを手に入れる必要がある)。
 あるいは、いちるの望みをかけてオークションで手に入れるか・・・・ですな。

QLAN内接続マシン数及びIP、マシン名の表示について

VB.NET、C言語を使用してLAN内に接続しているマシン数とそのマシンのコンピュータ名、IPを取得するプログラムを各言語で開発したいのですが参考になるものが無く困っています。
参考になるURLや方法を教えていただきたいです。
開発環境はVBはWin XPでVisual Studio 2003でC言語は gccでやろうと思っています。

Aベストアンサー

VB.NET ですが単体取得からリスト取得までたくさんありますよ。
自分仕様に合うように変更していったらいいと思います。
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=vb.net+ip+%E3%83%9B%E3%82%B9%E3%83%88%E5%90%8D+%E4%B8%80%E8%A6%A7&num=50


人気Q&Aランキング

おすすめ情報