|
▼Hirofumi さん:
ありがとうございます。
7/3/20と入力した場合のみH19.03.20と表示させたいのですが
最初のコードの機能を残したいのですが・・・
下記のコードで20と入力するとM33.01.20になってしまいます
それと7/3/20と入力した場合H19.03.21となり1プラスとなりますが
プラス1は不要です。
わかりにくい説明ですみません。
よろしくお願いします。
>実状に合うか、解りませんが?
>要は、シリアル値としてセルに代入せず文字列にすると言う事ですか?
>
>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
↑プラス1を削除すると
H19.3.20となりOKです
> 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
|
|