gpt4 book ai didi

excel - Worksheet_Deactivate() 无法使用事件工作表函数

转载 作者:行者123 更新时间:2023-12-04 20:00:06 25 4
gpt4 key购买 nike

我在项目中有 50 个数据表,没有人记得在转到另一张表时运行保存宏。明智的想法是在他们选择另一个工作表时使用私有(private)子 Worksheet_Deactivate 进行必要的计算。除了 50 个数据表之外,工作簿中还有两个不能运行计算的工作表。如果子可以放在“工作表”中而不是在单个工作表中复制 50 次,那就太好了,但是其他两个工作表需要从处理中排除。

问题是,子默认为停用工作表(例如宏代码中不合格的“Range.Value =”),但事件工作表现在是导航到的工作表。所以任何 ActiveXXXXX 语句都指向错误的工作表。 Worksheet.Name 是不允许的。

数据表编号为 1 到 50。需要的是在 deactivate sub 的早期声明,类似于

如果 DeactivatingWorksheet(X) = "BasicInfo"或 "Constants"然后转到 EndSub
其中 X 是停用工作表的值。当然,X 在处理时只有 Excel 知道。

我似乎无法弄清楚如何在宏的 IF 语句中引用停用工作表。有任何想法吗?

最佳答案

使用 Workbook_SheetDeactivate(ByVal sh as Object) 而不是 Worksheet_Deactivate() .工作簿级别的事件提供要离开的工作表的名称,即使在这两种情况下都是 ActiveSheet事件触发时已经改变。使用sh就像一个工作表变量 - sh.Name , sh.ProtectionMode , ETC。

现在您不需要 50 个潜艇;只有一个。这允许的另一件事是,您可以“中止”对现在 ActiveSheet 的更改。通过 sh.Activate到旧的(但关闭事件,否则你会有一个可爱的无限循环)。
Me如果您仍然想这样做,还提供旧的工作表名称并适用于工作表事件。 Me是旧的,ActiveSheet是新的。

关于excel - Worksheet_Deactivate() 无法使用事件工作表函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32261280/

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