gpt4 book ai didi

excel - 当单元格更改时,VBA 运行宏,但如果通过宏则不运行

转载 作者:行者123 更新时间:2023-12-02 09:11:50 25 4
gpt4 key购买 nike

好吧,我不确定这是否容易实现,但我会尝试。

如果单元格发生更改,我使用此子程序来执行一些宏:

Private Sub Worksheet_Calculate()
Dim target As Range
Set target = Range("b4")
If Not Intersect(target, Range("b4")) Is Nothing Then
Call init
End If
End Sub

这工作正常,但我有一点问题。

单元格B4(如上面的单元格更改子部分中所引用)的值由动态的命名范围确定,并包含另一张工作表上的值列表。我使用数据验证工具将 B4 制作为包含指定范围内容的下拉列表。

我还有另一个宏,其目的是更新此列表。它的作用是清除当前列表,查询数据库并将一堆值输出到范围内。问题在于,当运行此宏时,它会导致 B4 的值发生更改(因为 B4 引用范围内的值)。这反过来又导致我的“单元格更改”宏运行并抛出错误。

有没有办法在我更新它引用的列表时阻止“单元格更改”宏运行?

希望这个问题有意义。

最佳答案

您可以使用 Application.EnableEvents 禁用 Worksheet_Calculate 事件,如下所示。请注意,这将禁用 Application.EnableEvents = FalseApplication.EnableEvents = 之间可能发生的任何 WorkSheetWorkBook 事件正确

因此,如果您的其他子程序像这样运行 - Worksheet_Calculate 事件将不会触发

Sub Other_Sub()
Application.EnableEvents = False
[b4].Value = "10"
'other stuff
Application.EnableEvents = True
End Sub

关于excel - 当单元格更改时,VBA 运行宏,但如果通过宏则不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13267850/

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