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と関連する良く見られている質問

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

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

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

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

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

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

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

Aベストアンサー

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

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

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
としてワークブックを再表示しておく必要があります。

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

QEXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか?
どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。
シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

Aベストアンサー

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け
Sheets("Sheet1").Name = "コピー"
Application.CutCopyMode = False
Application.SheetsInNewWorkbook = sc
ActiveWorkbook.Close
ThisWorkbook.Activate
End Sub

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け...続きを読む

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で動くかも確認する必要があります。
判らなくなったらまた質問してください。

QVBAのワークシートの追加とコピーなんですが。

VBAのワークシートの追加とコピーなんですが。


sheet1の原紙をすべてコピーして、

新しくワークシートを追加してそのシートに貼り付けるプログラムを

教えてください。

Aベストアンサー

With ActiveWorkbook
  aaa = .Sheets("Sheet1").Cells(9, 4).Value 'aaaは社員
  bbb = .Sheets("Sheet1").Cells(9, 5).Value 'bbbは4月
  .Sheets("Sheet1").Copy After:=.Sheets(.Sheets.Count)
End With
ActiveSheet.Name = aaa & bbb

QEXCEL97と2002の違いでVBAは?

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

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

Aベストアンサー

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

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

QEXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法

 EXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法
 普通のやり方では、セルの数字、値だけで、通常は、中身の重要な"関数式"であったり、VBA等のプログラムまで、コピーされることは、ありませんので、そこまで、出来る方法を教えて下さい。

Aベストアンサー

コピー元のBookとコピー先Bookをどちらも開いて
Excel画面上に並べます(左右に並べる方が作業しやすいと思います)

Ctrlキーを押しながら、コピーしたいシートのタブ部分を
クリック長押しすると、+マークと▲マークが出てきます。
マークが出てきたら、新しいBookにドラッグ&ドロップ で
シートコピーが出来ます。

全く同じシートがコピーされ、マクロもコピーされます。

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ランキング