gpt4 book ai didi

vba - 如何清除 Excel VBA 中的静态变量?

转载 作者:行者123 更新时间:2023-12-03 14:13:58 25 4
gpt4 key购买 nike

我在 Sub 中定义了一个静态变量:

Private Sub assignVars()
' Use this function to assign default values

Static isSet As Integer

If isSet <> 1 Then
' do something

isSet = 1
End If

End Sub

我对我的代码进行了一些更改,并希望重置静态变量“isSet”。有没有简单的方法可以在不关闭 Excel 并再次打开它的情况下做到这一点?

最佳答案

最简单的方法是执行 End立即窗口中的声明。

但是,这会破坏所有存储的状态——即所有模块级变量、所有过程中的所有静态变量等。而且它很突然; UnloadTerminate事件不触发等:

http://msdn.microsoft.com/en-us/library/gg251671.aspx

(在重新阅读您的问题后,我编辑了下面的内容......)

要在一个例程中导致状态丢失,您可以手动注释掉 isSet 的声明然后恢复它。您可以在 VBE 中的“工具...选项”菜单的“常规”选项卡下进行一项设置,当这种状态丢失发生时,您会收到通知。 (不过,它不会对 End 的调用发出警报,大概是因为在这种情况下您不需要任何警告。)

您没有要求这样做,但是如果您希望能够在不编辑任何代码的情况下在一个过程中重置一个静态变量,则必须执行以下操作:

Public Sub assignVars(Optional reset As Boolean)
Static isSet As Integer

If reset Then
isSet = 0

Exit Sub
End If

If isSet <> 1 Then
isSet = 1
End If
End Sub

请注意,我必须让你的例程 Public这样您就可以使用参数 True 从即时窗口调用它当你想要重置时。

如果您需要一些可以从您的过程外部访问的状态,在这种情况下,为了能够手动重置它,您可以考虑使用模块级变量而不是 Static。程序一级。那么你的日常工作可以保持 Private ,它的接口(interface)不会因为重置而被弄脏,你可以手动处理你想要的所有模块级变量。

关于vba - 如何清除 Excel VBA 中的静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6724087/

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