以下代码行用文本填充列J中的单元格(
String
)而不是日期/值。因此,
J2=TODAY()
评估为
False
。快速修复方法是将公式更新为
=IF(J2=TEXT(TODAY(), "ddd d/mm"),1,0)
.
Intersect(Target.EntireRow, Columns(DateColumn)).Value = Format(Now, "ddd d/mm")
我建议更新您的脚本,用实际日期填充J列中的单元格。以下是建议的更改:
-
设置
Application.EnableEvents = False
作为第一设置。
-
使用
Date
返回今天的日期,而不是
Now
.
-
对J列应用日期格式以确保一致性。
应用更改后,您的公式应能正常工作。
Private Sub Worksheet_Change(ByVal Target As Range)
Const ColumnsToMonitor As String = "k:z"
Const DateColumn As String = "j"
Application.EnableEvents = False
If Not Intersect(Target, Columns(ColumnsToMonitor)) Is Nothing Then
With Intersect(Target.EntireRow, Columns(DateColumn))
.Value = Date
.NumberFormat = "ddd d/mm"
End With
End If
Application.EnableEvents = True
End Sub