データ入力を簡単にするために、ユーザーは「/」を付けずに「ddmmyyyy」と入力することができます(例: "12032017")。エントリの後、 "dd/mm/yyyy"の値、たとえば "12/03/2017"でターゲットセルを更新したいとします。
開始時に、ターゲットセルのフォーマットは "General"に設定されますが、日付値が計算されるとすぐに、セルのフォーマットは自動的に "dd/m/yyyy"に変更されます。 私は、一般書式と日付書式の両方を使用しようとしました。以下は、あなたはまだ日付ではなく実際の日付、使用DateSerialのように見える文字列を返しているVBAコード文字列の値をvbaの日付値に変換する
If Not Intersect(Target, Range("D11:D510")) Is Nothing Then
If Not (Target.Value = "") Then
Application.EnableEvents = False ' very important
Target.Value = Left(Target.Value, 2) & "/" & Mid(Target.Value, 3, 2) &
"/" & Right(Target.Value, 4)
Application.EnableEvents = True 'very important
End If
End If
'12032017'は、Excelが意志有効な認識日付ではありません自動的に変更されるので、フォーマットを変更するだけでは機能しません。 Worksheet_Changeイベントでvbaが必要です。このイベントは、文字列を解析して日付を返し、適切にフォーマットできます。 –
@ScottCraner、返信いただきありがとうございます。はい、私はマクロを使用しており、以下はコードです。 (ターゲット、範囲( "D11:D510"))がNothingの場合 Not(Target.Value = "")Then Application.EnableEvents = False '非常に重要 Target.Value = Left(Target。値、2)& "/" &ミッド(Target.Value、3、2)& "/" &右(Target.Value、4) Application.EnableEvents = true「に非常に重要な エンド END IF – Ehsan
もしくださいコメントではなく[編集]を使ってオリジナルの投稿にコードを入れてください。 –