Excel VBA时间戳执行第一个实例,但不执行第二个实例

Excel VBA时间戳执行第一个实例,但不执行第二个实例,excel,vba,timestamp,Excel,Vba,Timestamp,我有一个很大的数据集,有许多不同的列需要更新。我正在尝试创建一种方法来为日期/时间加上时间戳,以确定上一次更新列的时间。我需要对4个单独的实例执行此操作 我遇到的问题是,对于VBA的第一个实例,它似乎工作得很好,但无论如何都不会在另一个列上执行。请参阅下面我的完整代码示例: Sub Worksheet_Change(ByVal Target As Range) Dim myTableRange1 As Range Dim myDateTimeRange1 As Range Dim myUpda

我有一个很大的数据集,有许多不同的列需要更新。我正在尝试创建一种方法来为日期/时间加上时间戳,以确定上一次更新列的时间。我需要对4个单独的实例执行此操作

我遇到的问题是,对于VBA的第一个实例,它似乎工作得很好,但无论如何都不会在另一个列上执行。请参阅下面我的完整代码示例:

Sub Worksheet_Change(ByVal Target As Range)

Dim myTableRange1 As Range
Dim myDateTimeRange1 As Range
Dim myUpdatedrange1 As Range

Set myTableRange1 = Range("S:S")

If Intersect(Target, myTableRange1) Is Nothing Then Exit Sub

Set myDateTimeRange1 = Range("A" & Target.Row)
Set myUpdatedrange1 = Range("X" & Target.Row)


If myDateTimeRange1.Value = "" Then
    myDateTimeRange1.Value = Now

End If
myUpdatedrange1.Value = Now

End Sub

Sub Worksheet_Change2(ByVal Target As Range)

Dim myTableRange2 As Range
Dim myDateTimeRange2 As Range
Dim myUpdatedrange2 As Range

Set myTableRange2 = Range("T:T")

If Intersect(Target, myTableRange2) Is Nothing Then Exit Sub

Set myDateTimeRange2 = Range("zz" & Target.Row)
Set myUpdatedrange2 = Range("Y" & Target.Row)


If myDateTimeRange2.Value = "" Then
    myDateTimeRange2.Value = Now

End If
myUpdatedrange2.Value = Now

End Sub
****更新****

我还尝试将此代码合并在一起,如下所示:

Sub Worksheet_Change(ByVal Target As Range)

Dim myTableRange1 As Range
Dim myDateTimeRange1 As Range
Dim myUpdatedrange1 As Range
Dim myTableRange2 As Range
Dim myDateTimeRange2 As Range
Dim myUpdatedrange2 As Range

Set myTableRange1 = Range("S:S")
Set myTableRange2 = Range("T:T")

If Intersect(Target, myTableRange1) Is Nothing Then Exit Sub
If Intersect(Target, myTableRange2) Is Nothing Then Exit Sub

Set myDateTimeRange1 = Range("A" & Target.Row)
Set myUpdatedrange1 = Range("X" & Target.Row)
Set myDateTimeRange2 = Range("zz" & Target.Row)
Set myUpdatedrange2 = Range("Y" & Target.Row)


If myDateTimeRange1.Value = "" Then
    myDateTimeRange1.Value = Now
If myDateTimeRange2.Value = "" Then
    myDateTimeRange2.Value = Now

End If
myUpdatedrange1.Value = Now
End If
myUpdatedrange2.Value = Now

End Sub
这导致两者都不起作用


我是VBA的新手,因此任何帮助都将不胜感激。谢谢你

你需要这样的东西(以大纲的形式),这样就不会忽略对单个列的更改

如果仅更改了T,则更新的代码将在到达相关代码位之前退出

如果你改变S和T,它只会做S位

Sub Worksheet_Change(ByVal Target As Range)

Dim myTableRange1 As Range
Dim myDateTimeRange1 As Range
Dim myUpdatedrange1 As Range
Dim myTableRange2 As Range
Dim myDateTimeRange2 As Range
Dim myUpdatedrange2 As Range

Set myTableRange1 = Range("S:S")
Set myTableRange2 = Range("T:T")

If Not Intersect(Target, myTableRange1) Is Nothing Then
    'your column S code

ElseIf Not Intersect(Target, myTableRange2) Is Nothing Then
    'your column T code

End If

End Sub

每个工作表只能有一个
工作表\u更改
事件,因此您需要组合代码。谢谢您,然后按照
子工作表\u更改的行(ByVal目标作为范围)编写代码将myTableRange1设置为范围将myTableRange2设置为范围,然后对每个部分重复此操作?是的,您必须更改相交线以覆盖两列,然后根据更改的列设置一个块。如果目标是多个单元格,则需要在该范围内循环(或者可以在代码
中排除该范围,如果Target.count>1,则退出sub
)。@SJR我已使用ammended代码更新了我的问题,这不会产生任何结果。使用此酷,您将看到如果
的位置不正确,则
结束。