gpt4 book ai didi

删除工作表后不再声明 VBA 全局变量

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

我有一些公共(public)工作表变量,这些变量在工作簿打开时首先初始化。我有一个按钮基本上可以执行此操作:

Dim Response As Variant

Response = MsgBox("Are you sure you want to delete this worksheet?", vbYesNo + vbExclamation, "Confirm Action")
If Response = vbNo Then
GoTo exit sub
End If

'Save workbook prior to deletion as a precaution
ThisWorkbook.Save

ActiveSheet.Delete

由于某种原因,运行后,这些工作表变量不再声明,我每次都必须重新初始化它们。我尝试在 .Delete 之后添加 InitVariables 宏调用,但它仍然不起作用。

有什么原因可能会发生这种情况吗?

最佳答案

原因实际上非常简单 - 工作表是 VBA 中的一个类,它的代码模块会与项目的其余部分一起编译即使它是空的。当您删除工作表并让代码执行停止时,下次运行某些代码时,VBE 必须重新编译项目,因为您删除了代码模块。这会导致您的自定义类扩展失去其状态。

请注意,除非代码停止运行并重新编译,否则这种情况不会发生。这工作得很好:

Sheet1.foo = 42        'foo is a public variable in Sheet1
Sheet2.Delete
Debug.Print Sheet1.foo 'Prints 42

关于删除工作表后不再声明 VBA 全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39671309/

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