|
▼へっぽこ さん:
ありがとうございます。
Keinさんの時と同様
2回目の入力では
1度消して2度目の入力時
1900/1/20を表示してしまいます。
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If Intersect(.Cells, Range("B20:B350")) Is _
Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value <> "" Then
Application.EnableEvents = False
If Day(Date) >= 23 Then
Target.Value = DateSerial(Year(Date), Month(Date) + 1, Day(Target.Value2) + 1)
Else
Target.Value = DateSerial(Year(Date), Month(Date), Day(Target.Value2) + 1)
End If
Application.EnableEvents = True
End If
End With
End Sub
>DELキー→3/3を防ぐために
>
>Private Sub Worksheet_Change(ByVal Target As Range)
> If IsNumeric(Target.Value) And Target.Value <> "" Then '←追加
> Application.EnableEvents = False
> If Day(Date) >= 23 Then
> Target.Value = DateSerial(Year(Date), Month(Date) + 1, Day(Target.Value2) + 1)
> Else
> Target.Value = DateSerial(Year(Date), Month(Date), Day(Target.Value2) + 1)
> End If
> Application.EnableEvents = True
> End If '←追加
>End Sub
>
>としてみました。
>
>どうやら、DELキーを押す→Target.Valueの値がEmptyになる→Day(Target.Value)=30になる
>30+1で31→DateSerial(2007,2,31)=2007/3/3になる
>という状況が発生するようです。
|
|