|
>7/3/20と入力した場合のみH19.03.20と表示させたいのですが
>最初のコードの機能を残したいのですが・・・
元のコードでも、「7/3/20」→「H19.03.20」とは成らないのでは?
元のコードでは、「7/3/20」→「2007/3/20」と成ると思うのですが(Excel97以外では)
>下記のコードで20と入力するとM33.01.20になってしまいます
此れは、IsDateで確認を取っている為、セルの書式が日付に成って居る場合に起こります
>それと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"))
With 各々のセル
If .Value <> "" Then
If IsNumeric(.Value) Or IsDate(.Value) Then
If 1 <= .Value And .Value <= 31 Then
lngYear = Year(Date)
lngMonth = Month(Date)
lngDay = .Value
Else
lngYear = Year(.Value)
lngMonth = Month(.Value)
lngDay = Day(.Value)
End If
If Day(Date) >= 25 Then
lngMonth = lngMonth + 1
End If
.NumberFormatLocal = "G/標準"
.Value = Format(DateSerial(lngYear, lngMonth, lngDay), strForm)
End If
End If
End With
Next
Application.EnableEvents = True
End Sub
|
|