对于两个不同的表集,在同一工作表中使用相同的VBA代码,第一个起作用,第二个不起作用

时间:2019-11-14 16:50:43

标签: excel vba

我发现以下代码可以在一个特定范围内写入任何内容时自动输入时间戳,并且我想在同一工作表中的两个特定位置执行此操作,因此我编写了相同的序列,但是第一个有效而第二个不起作用,在我的代码下面:

Private Sub Worksheet_Change(ByVal Target As Range)
'==============logdate timestamp completed============
Dim myTableRange As Range
Dim myDayTimeRange As Range


'my Data Table Range
Set myTableRange = Range("E:E")

If Not Intersect(Target, myTableRange) Is Nothing Then

'Column for the date
Set myDateTimeRange = Range("A" & Target.Row)

If myDateTimeRange.Value = "" Then

    myDateTimeRange.Value = Now
End If

End If


'==============logdate timestamp inflight============
Dim myTableRangeif As Range
Dim myDayTimeRangeif As Range

'my Data Table Range
Set myTableRangeif = Range("N19:R19")

If Not Intersect(Target, myTableRangeif) Is Nothing Then

'Column for the date
Set myDateTimeRangeif = Range("J" & Target.Row)

If myDateTimeRangeif.Value = "" Then

    myDateTimeRangeif.Value = Now
End If
End If

End Sub

只需按照建议更改代码,但是时间戳显示在“ A”列上,而不显示在“ J”列上

1 个答案:

答案 0 :(得分:0)

Range("N19:R19")中进行更改时,将执行Exit Sub,因为确实是Intersect(Target, myTableRange) Is Nothing

如果Exit无效,则需要更改Sub Intersect的逻辑。

If Not Intersect(Target, myTableRange) Is Nothing Then
    'Column for the date
    Set myDateTimeRange = Range("A" & Target.Row)

    If myDateTimeRange.Value = "" Then
        myDateTimeRange.Value = Now
    End If

End If

...

If Not Intersect(Target, myTableRangeif) Is Nothing Then
    'Column for the date
    Set myDateTimeRangeif = Range("J" & Target.Row)

    If myDateTimeRangeif.Value = "" Then
        myDateTimeRangeif.Value = Now
    End If

End If