如何使两个单元格相互依赖而不会出现循环错误?
How do I make two cells dependent on one another without circular error?
在 Excel 2013 年,我有单元格 A1、A2 和 A3 以及 B1、B2 和 B3。 A 列是年度计算,B 列是每周计算。
例如,如果用户更新了 A1(例如,5200
),我想自动更新 B1(例如,100
)。如果用户更新 B1(例如,50
),我想自动更新 A1(例如,2600
)。同样适用于 A2-B2 和 A3-B3。
当我尝试同时监控两者时,它会产生一个循环问题并且 Excel 崩溃。
那就别用公式了。使用这样的 _Change
事件:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
Application.EnableEvents = False 'Prevent infinite looping
If Target.Column = 1 Then
'User has changed something in column A:
Target.Offset(0, 1).Value = Target / 52
Else
'User has changed something in column B:
Target.Offset(0, -1).Value = Target * 52
End If
Application.EnableEvents = True
End Sub
在 Excel 2013 年,我有单元格 A1、A2 和 A3 以及 B1、B2 和 B3。 A 列是年度计算,B 列是每周计算。
例如,如果用户更新了 A1(例如,5200
),我想自动更新 B1(例如,100
)。如果用户更新 B1(例如,50
),我想自动更新 A1(例如,2600
)。同样适用于 A2-B2 和 A3-B3。
当我尝试同时监控两者时,它会产生一个循环问题并且 Excel 崩溃。
那就别用公式了。使用这样的 _Change
事件:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
Application.EnableEvents = False 'Prevent infinite looping
If Target.Column = 1 Then
'User has changed something in column A:
Target.Offset(0, 1).Value = Target / 52
Else
'User has changed something in column B:
Target.Offset(0, -1).Value = Target * 52
End If
Application.EnableEvents = True
End Sub