[英]i want to increment the number on a cell when date is updated on another cell in excel
我在 A1 中有日期,在 B1 中有数字,类似的在 D1 中有日期,在 E1 中有数字。 我希望 b1 和 e1 分别在 A1 和 D1 中的值发生变化时增加 1 个数字。 我希望将相同的逻辑应用于所有行 ex(如果 a2 中的某些内容发生变化,则 b2 应增加 1 个数字,如果 a3 中的某些内容更新,则 b3 应增加 1 个数字。类似地,如果 d2 被更新,则e2 应增加 1 个数字,如果 d3 更新,则 e3 应增加 1 个数字。
我试过使用这个 VBA 代码
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Application.EnableEvents = False
Range("B1").Value = Range("B1").Value + 1
Application.EnableEvents = True
End If
If Not Intersect(Target, Range("D1")) Is Nothing Then
Application.EnableEvents = False
Range("E1").Value = Range("E1").Value + 1
Application.EnableEvents = True
End If
End Sub
但是当我尝试将范围放入它们时,它仅适用于那些特定的单元格,它不起作用。
我现在没有可用的 excel 但试试这个
Private Sub Worksheet_Change(ByVal Target As Range)
Dim shAdd as string
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Application.EnableEvents = False
shAdd = "B" & Target.Row
Range(shAdd).Value = Range(shAdd).Value + 1
Application.EnableEvents = True
End If
If Not Intersect(Target, Range("D:D")) Is Nothing Then
Application.EnableEvents = False
shAdd = "E" & Target.Row
Range(shAdd).Value = Range(shAdd).Value + 1
Application.EnableEvents = True
End If
End Sub
它对您不起作用的原因是代码中的这一行Intersect(Target, Range("A1"))
仅指单元格"A1"
而不是整列。 通过用"A:A"
替换它,我引用了整个列。 这会检查Target
是A列中的任何单元格。 此外,为了确保正确的单元格与更改的单元格在同一行上递增,我使用了Target
的.Row
属性。 由于要递增的单元格始终位于 B 列或 E 列中,因此我只需要将Target
的行附加到列字母并将其作为字符串传递给此处的Range
函数
shAdd = "E" & Target.Row
Range(shAdd).Value = Range(shAdd).Value + 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.