如何将宏/ vba公式应用于特定单元格



我想将 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

最新更新