|
こんにちは。
> たとえば"07/05/20"と入力した場合
そしたら…
年月日を入力したらそのまま設定。
日付だけならVBAで処理して設定。
という感じでしょうか。
31以下の数字を入力した場合に処理するように「←追加」の2行を加えてみました。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim 各々のセル As Range
If Intersect(Target, Range("B20:B350")) Is Nothing Then
Exit Sub
End If
Application.EnableEvents = False
'For Each を使ってIntersect(Target, Range("B20:B350"))の範囲内にあるセルを
'1つ1つ処理する。
For Each 各々のセル In Intersect(Target, Range("B20:B350"))
If IsNumeric(各々のセル.Value2) And 各々のセル.Value2 <> "" Then
If 各々のセル.Value2 <= 31 Then '←追加
If Day(Date) >= 23 Then
各々のセル.Value = DateSerial(Year(Date), Month(Date) + 1, Day(各々のセル.Value2) + 1)
Else
各々のセル.Value = DateSerial(Year(Date), Month(Date), Day(各々のセル.Value2) + 1)
End If
End If '←追加
End If
Next
Application.EnableEvents = True
End Sub
但し、すごく小さい日付(1900/1/1〜1900/1/31)は処理されてしまいます。
|
|