如果范围C:C中包含日期,我正在使用以下工作表更改将信息从工作表1复制到工作表2。但是我想在范围C:C中插入一个时间戳公式来自动生成日期。我想知道如何修改我的VBA代码,以便它能够识别现在在该范围内的公式?谢谢!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nextRow As Long
If Not Intersect(Target, Range("C:C")) Is Nothing Then
If VBA.IsDate(Target) Then
With Worksheets("Summary")
nextRow = IIf(VBA.IsEmpty(.Range("A1048576").End(xlUp)), 1, .Range("A1048576").End(xlUp).Row + 1)
.Range("A" & nextRow) = Target.Offset(0, -2)
.Range("B" & nextRow) = Target.Offset(0, -1)
.Range("E" & nextRow) = Target
.Range("H" & nextRow) = Target.Offset(0, 5)
End With
End If
End If
End Sub
答案 0 :(得分:0)
你应该按原样运作的代码。如果[传入的表达式]属于日期数据类型或者可以转换为日期,则IsDate
函数“返回True。”值为日期的范围可以转换为日期,因此应识别其中包含日期返回公式的单元格。 (我通过实验验证了这一点。)
唯一需要注意的是,如果你想要复制值而不是公式(如果公式是依赖于上下文的话,可能是必要的),你应该替换
.Range("E" & nextRow) = Target
带
.Range("E" & nextRow) = Target.Value
并在可能包含您不想复制的公式的任何.Value
之后同样附加Offsets
。