gpt4 book ai didi

excel - 如何使用 Worksheet_change 事件更改单元格值而不触发第二次调用

转载 作者:行者123 更新时间:2023-12-03 00:25:44 26 4
gpt4 key购买 nike

我正在处理一个简单的工作表,我需要根据用户输入更改单元格中的一些数据;这些更改是使用 Worksheet_Change 事件进行的。但是,当我更改另一个单元格时,该事件会再次触发,因此变得非常令人头痛(这有点像“先有鸡还是先有蛋”的情况)。

示例:

private sub Worksheet_Change(ByVal Target as Range)
with target ' Only cells in column C are unlocked and available for edition
select case .row
case 4
if .value = 1 then
ActiveSheet.cells(5,3).value = 0
else
ActiveSheet.cells(5,3).value = 1
end if
case 5
if .value = 1 then
ActiveSheet.cells(4,3).value = 0
else
ActiveSheet.cells(4,3) = 1
end
end select
end with
end sub

如您所见,第 4 行中的更改会触发第 5 行中的更改,这可能会触发第 4 行中的另一次更改...并且它会变成“无限调用”,最终导致 Excel 崩溃。

所以,问题是:有没有一种方法可以以编程方式更改单元格的值而不触发 Worksheet_Change 事件?

最佳答案

在更改单元格时禁用中断,然后在完成后重新启用中断:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range
Set A = Range("A1")
If Intersect(Target, A) Is Nothing Then Exit Sub
Application.EnableEvents = False
A.Value = ""
A.Offset(0, 1).Value = "CLEARED"
Application.EnableEvents = True
End Sub

关于excel - 如何使用 Worksheet_change 事件更改单元格值而不触发第二次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28220333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com