• 締切済み

日付の書式設定が変わってしまうことについて

日付の書式設定が変わってしまうことについて エクセル2000でつくったマクロ(下記)をエクセルXPで使用すると、2010/3/25が 25/3/2010とコピーされてしまいます。 セルの書式をアスタリスクなしに設定しなおしても、マクロを実行するとアスタリスクありの書式でコピーされます。 エクセル2000で実行すると、書式が変わることなくコピーできます。 ヘルプを探しましたが、対策を見つけることができませんでした。 ご存知の方ございましたらご教授願います。 OSはXP HE SP3、国設定は日本です。 【マクロ】 Private Sub CommandButton1_Click() Dim i As Long Dim Sh1 As Worksheet Dim Sh2 As Worksheet Set Sh1 = ActiveWorkbook.Worksheets("P") Set Sh2 = ActiveWorkbook.Worksheets("D") Application.ScreenUpdating = False Sh1.Range("A35:X36").Value = Sh1.Range("A32:X33").Value ・・・この段階ではSh1.Range("B35")に2010/3/25とコピーされる・・・ Sh2.Unprotect i = Sh2.Range("A25000").End(xlUp).Offset(1).Row Sh2.Cells(i, 1).Resize(2, 8).Value = Sh1.Cells(35, 1).Resize(2, 8).Value・・・この段階でSh2に25/3/2010とコピーされる・・・ Sh2.Select Sh2.Range("A2:H25000").Select Selection.Sort Key1:=Sh2.Range("C2"), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin Sh2.Protect Set Sh1 = Nothing Set Sh2 = Nothing Application.ScreenUpdating = True End Sub

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

valueは値のみを参照するプロパティですよ 書式が必要ならcopyを使用するのが一般的です >Sh2.Cells(i, 1).Resize(2, 8).Value = Sh1.Cells(35, 1).Resize(2, 8).Value・・・この段階でSh2に25/3/2010とコピーされる・・・ Sh1.Cells(35, 1).Resize(2, 8).copy Sh2.Cells(i, 1) に変更してはと思います

  • chuchuo
  • ベストアンサー率45% (99/217)
回答No.1

一例です A列に日付のデータが混在しているということだとして 最後に日付データだけ好みの様式に変更してみてはいかがでしょう? IsDate関数で判定して 日付データのみ FormatDateTime関数で表示形式を設定

hayatekomati50
質問者

お礼

ご回答ありがとうございます。 書式ごとコピーさせるように書き換えたところ、書式が変更されなくなりました。 確かなことはわかりませんが、2002はシート間のValue転記に問題があるようですね

関連するQ&A

専門家に質問してみよう