| 
    
     |  | 実状に合うか、解りませんが? 要は、シリアル値としてセルに代入せず文字列にすると言う事ですか?
 
 Option Explicit
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 
 Const strForm As String = "gee.mm.dd"
 
 Dim 各々のセル As Range
 Dim lngYear As Long
 Dim lngMonth As Long
 Dim lngDay As Long
 
 If Intersect(Target, Range("C28:C500")) Is Nothing Then
 Exit Sub
 End If
 
 Application.EnableEvents = False
 
 For Each 各々のセル In Intersect(Target, Range("C28:C500"))
 If 各々のセル.Value2 <> "" Then
 If IsDate(各々のセル.Value) Then
 lngYear = Year(各々のセル.Value)
 lngMonth = Month(各々のセル.Value)
 lngDay = Day(各々のセル.Value) + 1
 Else
 If IsNumeric(各々のセル.Value2) Then
 If 各々のセル.Value2 <= 31 Then
 lngYear = Year(Date)
 lngMonth = Month(Date)
 lngDay = Day(各々のセル.Value2) + 1
 End If
 End If
 End If
 If Day(Date) >= 25 Then
 lngMonth = lngMonth + 1
 End If
 各々のセル.Value = Format(DateSerial(lngYear, lngMonth, lngDay), strForm)
 End If
 Next
 
 Application.EnableEvents = True
 
 End Sub
 
 
 |  |