• ベストアンサー

Excel VBAでの日付の表示形式指定について

以下のサイトを参考に、B列に入力するとC列に自動で日付が挿入されるようなVBAを作成し、日付を「07/19」という表示形式にしたかったので、Format関数で指定しました。 http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=34979&rev=&no=0&P=R&KLOG=226 -----VBA------------ 'B列入力で日付自動挿入 Private Sub Worksheet_Change(ByVal Target As Range) Dim RR As Range Dim R As Range Set RR = Intersect(Target, Range("B:B")) If RR Is Nothing Then Exit Sub Application.EnableEvents = False For Each R In RR If R.Value <> "" Then R.Offset(, 1).Value = Format(Date,"mm/dd") Else R.Offset(, 1).ClearContents End If Next Application.EnableEvents = True End Sub --------------------- うまく日付が挿入されるのですが、なぜか表示形式が 「7月19日」と日本語表記になってしまいます。 「セルの書式設定」で「mm/dd」と設定すればいいのかもしれませんが、VBAで設定する方法はないのでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

質問者のコードの中の始めのほうに MsgBox Format(Date, "mm/dd") を入れてみました。ここを通ると 7/19(本日は7月19日)と表示される。もちろんFormat関数を使っているから、文字列だ。 シートで数字文字列(例 全角7+半角/+19でも)のつもりでも数字でも、入力すると、/が入っているので、エクセルの強烈な日付変換(解釈)機能で日付を入力したものとされて、/が1つの月日入力の場合は、シートの地の日付書式の7月19日で表示されてしまう。 この設定がどこに由来するものか小生思い出せないが。 C列の日付書式を2009/7/19の形式に設定していなくても。2009/7/19で入れるとそのまま2009/7/19になるのにね。 ーー (1)改善策はC列の書式を3/14(エクセルの場合の代表例で有るでしょ)を設定しておく。 (2)コードを下記に変える R.Offset(0, 1) = Date R.Offset(0, 1).NumberFormat = "mm/dd" にする。 エクセルでは日付はヒヅケシリアル値という正整数で、数なので NumberFormatになっていると思われる。文字列に、ろくな書式設定は無いが、それでもNumberFormatなのだが。 ーー Set RR = Intersect(Target, Range("B:B")) なんてむつかしい書き方をしなくても簡単に If Target.Column=2 Then で済むのに。

その他の回答 (2)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

回答は出でますが。。。 書式の表示形式は、NumberFormatプロパティですので >R.Offset(, 1).Value = Format(Date,"mm/dd") これを以下の2行に変更してみてください。 R.Offset(, 1).NumberFormatLocal = "mm/dd" R.Offset(, 1).Value = Date   以上です。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>「セルの書式設定」で「mm/dd」と設定 の動作をマクロの自動記録で確認してみるとか。

関連するQ&A

専門家に質問してみよう