工作表更改中的For循环故障



请我有一个问题,每次在工作表上发生变化,它会影响所有行,而不是行(I)有关。困惑。不for循环工作为worksheet_change ?请帮助。谢谢。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim LR As Long
'create a variable for last row of column C, LR
LR = Cells(Rows.Count, "C").End(xlUp).Row

For i = 2 To LR
If Cells(i, 6) = "Yes" And Cells(i, 7).Value = "Full" Then 
Target.Value = Cells(i, 3).Value
Cells(i, 9).ClearContents
Cells(i, 10).Value = Cells(i, 8).Value + Cells(i, 9).Value
End If

If Not Intersect(Target, Range("G" & i & ":G" & LR)) Is Nothing And Range("F" & i) = "Yes" 
And Target.Value = "Full" Then
Application.EnableEvents = False
Cells(i, 8).Value = Cells(i, 3).Value
Cells(i, 9).ClearContents
Cells(i, 10).Value = Cells(i, 8).Value + Cells(i, 9).Value
Application.EnableEvents = True
End If

If Not Intersect(Target, Range("G" & i & ":G" & LR)) Is Nothing And Range("F" & i) = "Yes" And 
Target.Value = "Portion" Then
Application.EnableEvents = False
Cells(i, 8).Value = Cells(i, 3).Value
Cells(i, 10).Value = Cells(i, 8).Value + Cells(i, 9).Value
Application.EnableEvents = True
End If

Next i
End Sub

似乎需要为列A-E启动此事件。所以,你可以用:

开始宏
IF Target.Column <= 5 THEN
...
END IF 'at the end of your macro

像这样,当你启动像Cells(i, 8).Value = ...,Cells(i, 10).Value = ...,…这个宏将被调用,但它将立即停止。

显然,您正在检查列,最大10,这是在您的宏中更改的单元格的范围内。让我们用另一种方法:

在宏的最开始,放入这一行:

Application.EnableEvents = False

在宏的最后,放入这一行:

Application.EnableEvents = True

(并删除其他出现项)。

这将确保您在运行宏时不会调用宏。

最新更新