我尝试使用以下代码在每次参考列更改时使用另一个参考列(G8:G508)的内容更新列(E8:E508):
Private Sub Worksheet_Calculate()
Dim Rng As Range
Set Rng = Range("G8:G503")
If Not Intersect(Rng, Range("G8:G503")) Is Nothing Then
Range("E8:E503") = Range("G8:G503").Value
End If
End Sub
代码按预期工作,但似乎一遍又一遍地运行并最终导致Excel崩溃。任何人都可以提供帮助 - 提前谢谢!
答案 0 :(得分:1)
Range("E8:E503") = Range("G8:G503").Value
触发另一个计算,触发事件处理程序等等。
为防止无休止的循环,您需要在执行此操作之前暂时禁用事件(然后重新启用)
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Range("E8:E503").Value = Range("G8:G503").Value
Application.EnableEvents = True
End Sub
答案 1 :(得分:0)
试试这个
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim Rng As Range
Set Rng = Range("G8:G503")
If Not Intersect(Rng, Target) Is Nothing Then
Range("E8:E503") = Rng.Value
End If
Application.EnableEvents = True
End Sub