excel - For Loop in Worksheet 更改故障
问题描述
请我有一个问题,每次在工作表上发生更改时,它都会影响所有行而不是相关的行 (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
解决方案
看来您需要为 AE 列启动此事件。因此,您可以使用以下命令开始您的宏:
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
(并删除其他事件)。
这将确保您在运行宏时不会调用它。
推荐阅读
- html - 如何在 HTML 页面中重用文本,其中文本在同一页面(而不是不同的文件)上定义?
- ruby-on-rails - 服务调用后如何检查 rspec 中的数组更改?
- php - 读取目录中的所有文件并在php中返回一个列表
- reactjs - 在数组中使用方法和重新渲染 React 组件
- python-3.x - tkinter 中的顶层正在旁边创建另一个空窗口
- javascript - PowerBI Embedded - 如何自定义菜单操作/上下文和自定义布局
- css - SVG 图像未显示在 ios 设备中
- c# - 如何在 Excel 中使用 C# 有效地比较连续行和连续行?
- gremlin - 如何进入/退出带有可读标签的节点的生成树以响应gremlin?
- flutter - 使用颤振对 google api(日历)进行身份验证