gpt4 book ai didi

vba - 使用代码添加命令按钮时全局变量会重置

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

我有这段简短的代码

Public n As Integer

Public Sub Foo()

For i = 0 To 4

MyModule.n = MyModule.n + 1

Next i

End Sub

它是在名为MyModule的模块中定义的。此代码按预期工作:第一次执行后,“MyModule.n”的值为 5。第二次执行后,它的值为 10,依此类推。

当我扩展代码以添加 CommandButton 并将其放置到工作表上时,全局变量 MyModule.n 在每次新调用 Foo 时都会丢失其值:

Public n As Integer

Public Sub Foo()

Dim btn As OLEObject

For i = 0 To 4

Set btn = Worksheets("Aufträge").OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Left:=122, Top:=321, Width:=30, Height:=30)

MyModule.n = MyModule.n + 1

Next i

End Sub

代码似乎可以工作,因为命令按钮已创建并放置正确。为什么执行第二个代码片段时全局变量会重置?

此外,我无法在第二个代码片段中的 For 循环之后或内部放置断点。我收到消息此时无法进入中断模式

最佳答案

根据我所做的搜索,我的结论是,您无法将控件动态添加到工作表并保留变量的状态。

原因如下:添加按钮将强制工作表进入设计模式,从而重置变量。

支持链接

  1. http://www.pcreview.co.uk/forums/dynamically-adding-activex-controls-via-vba-kills-global-vba-heap-t3763287p2.html

  2. https://web.archive.org/web/20101215134333/http://support.microsoft.com/kb/231089 (原文为//support.microsoft.com/kb/231089)

关于vba - 使用代码添加命令按钮时全局变量会重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12237410/

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