Excel 2 个具有不同目标的工作表事件
Excel 2 Worksheets Events with Different Targets
我有一个 excel 工作表,我想为其分配多个工作表事件。
更具体地说,我希望每当 B 列中的一个单元格发生更改时,左侧的一个单元格(A 列)将获得行号。
此外,我希望每当 J 列中的一个单元格发生更改时,右侧的一个单元格(K 列)将获得今天的日期。
它对我来说对他们两个都有效,但我认为我可能会做错事。
任何帮助将不胜感激!
Private Sub AG1(ByVal a_Target As Range)
If Not Intersect(a_Target, Me.Range("B2:B3000")) Is Nothing Then
Application.EnableEvents = False
Cells(a_Target.Row, a_Target.Column - 1) = a_Target.Row
Application.EnableEvents = True
End If
End Sub
Private Sub AG2(ByVal b_Target As Range)
If Not Intersect(b_Target, Me.Range("J2:J3000")) Is Nothing Then
Application.EnableEvents = False
Cells(b_Target.Row, b_Target.Column + 1) = Date
Application.EnableEvents = True
End If
End Sub
编辑 - 现在有效(我还添加了该列可以称为字母):
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = True
If Split(Cells(1, Target.Column).Address(True, False), "$")(0) = "B" Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column - 1) = Target.Row
Application.EnableEvents = True
ElseIf Split(Cells(1, Target.Column).Address(True, False), "$")(0) = "J" Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column + 1) = Date
Application.EnableEvents = True
End If
End Sub
复制 Worksheet_Change
事件中的代码,这应该可以解决您的问题。这将在您每次为任何单元格输入值时触发,并且只有当它们与 if 语句中的范围相交时才会满足条件。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("B2:B3000")) Is Nothing Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column - 1) = Target.Row
Application.EnableEvents = True
End If
If Not Intersect(Target, Me.Range("J2:J3000")) Is Nothing Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column + 1) = Date
Application.EnableEvents = True
End If
End Sub
我有一个 excel 工作表,我想为其分配多个工作表事件。 更具体地说,我希望每当 B 列中的一个单元格发生更改时,左侧的一个单元格(A 列)将获得行号。 此外,我希望每当 J 列中的一个单元格发生更改时,右侧的一个单元格(K 列)将获得今天的日期。
它对我来说对他们两个都有效,但我认为我可能会做错事。
任何帮助将不胜感激!
Private Sub AG1(ByVal a_Target As Range)
If Not Intersect(a_Target, Me.Range("B2:B3000")) Is Nothing Then
Application.EnableEvents = False
Cells(a_Target.Row, a_Target.Column - 1) = a_Target.Row
Application.EnableEvents = True
End If
End Sub
Private Sub AG2(ByVal b_Target As Range)
If Not Intersect(b_Target, Me.Range("J2:J3000")) Is Nothing Then
Application.EnableEvents = False
Cells(b_Target.Row, b_Target.Column + 1) = Date
Application.EnableEvents = True
End If
End Sub
编辑 - 现在有效(我还添加了该列可以称为字母):
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = True
If Split(Cells(1, Target.Column).Address(True, False), "$")(0) = "B" Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column - 1) = Target.Row
Application.EnableEvents = True
ElseIf Split(Cells(1, Target.Column).Address(True, False), "$")(0) = "J" Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column + 1) = Date
Application.EnableEvents = True
End If
End Sub
复制 Worksheet_Change
事件中的代码,这应该可以解决您的问题。这将在您每次为任何单元格输入值时触发,并且只有当它们与 if 语句中的范围相交时才会满足条件。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("B2:B3000")) Is Nothing Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column - 1) = Target.Row
Application.EnableEvents = True
End If
If Not Intersect(Target, Me.Range("J2:J3000")) Is Nothing Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column + 1) = Date
Application.EnableEvents = True
End If
End Sub