我正在运行一个小型VBA,以遍历一系列行(27-52),以将D列X E列的简单乘法返回到F列。
我下面的代码使Excel崩溃。谁能指出我犯错的明显之处。我显然不是专家!
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 27 To 52
Cells(i, 6) = Cells(i, 4) * Cells(i, 5)
Next i
End Sub
谢谢
答案 0 :(得分:4)
由于您使用的更改事件,Excel将在您的代码创建无限循环时崩溃。每次您的代码将两个给定的单元格相乘时,它将被识别为更改事件,因此您的代码将被再次触发,...
您可以使用Michal发布的调整后的代码,也可以调整原始代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
For i = 27 To 52
Cells(i, 6) = Cells(i, 4) * Cells(i, 5)
Next i
Application.EnableEvents = True
End Sub
希望有帮助!
答案 1 :(得分:-1)
我不知道它将如何“崩溃” Excel,另外,您不需要Change(ByVal Target As Range)
,所以很简单:
Private Sub foo()
For i = 27 To 52
Cells(i, 6).Value = Cells(i, 4).Value * Cells(i, 5).Value
Next i
End Sub