我想将 vba 公式应用于指定的单元格。我正在处理的 vba 将是:如果我在 C2 上键入内容,则日期戳将自动放入 D2 中。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
With Target.Offset(0, 1)
.Value = Now
.NumberFormat = "MM/DD/YYYY"
End With
End Sub
但是,如果我在 C1 上键入内容,也会出现日期戳。如何限制 vba 的范围?例如,我只想要从 D2 到 D5 的日期戳。
谢谢!!
您可以应用Intersect
函数来检查目标是否落入所需范围,如下所示
Dim dr As Range
Set dr = Range("C2:C5")
If Not Intersect(target, dr) Is Nothing Then
... it is OK, go ahead
EndIf
第一个答案是正确的,但这里是它的完整版本
将其粘贴到表的项目中,而不是作为 VBA 模块粘贴
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WorkRng As Range
Dim rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("C2:C5"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
Application.EnableEvents = False
For Each rng In WorkRng
If Not VBA.IsEmpty(rng.Value) Then
rng.Offset(0, xOffsetColumn).Value = Now
rng.Offset(0, xOffsetColumn).NumberFormat = "mm-dd-yyyy"
Else
rng.Offset(0, xOffsetColumn).ClearContents
End If
Next
Application.EnableEvents = True
End If
End Sub