【发布时间】:2022-05-16 19:24:30
【问题描述】:
我知道有几个类似的问题,但恐怕他们的答案都不能解决我的问题。
我创建了一个简单的文件来测试问题。 Sheet1 中的代码:
Public aaa As String
Sub abc()
UserForm1.Show
Debug.Print aaa
End Sub
UserForm1 中的代码:
Private Sub CommandButton1_Click()
aaa = TextBox1.Text
Debug.Print aaa
Unload UserForm1
End Sub
我逐行运行代码,卸载前的 Debug.Print 工作正常;并且公共 var 在卸载用户表单后立即失去其价值。 我尝试将卸载更改为隐藏,但没有成功。无论如何,全局 var 的值都会丢失。
我认为这个测试文件足够简单,可以避免任何问题...谁能告诉我为什么全局变量不能保持其值?谢谢。
【问题讨论】:
-
添加新模块并将
aaa变量移入其中。 -
恐怕“公共变量”甚至没有被使用... VBA 创建了一个新的 Variant 变量并使用它。请尝试将
Option Explicit放在表单代码模块的顶部。您必须在标准模块中声明Public变量,以便在不提及工作表代码名称的情况下访问...或尝试Sheet1.aaa = TextBox1.Text。它不能失去它没有的东西。 -
谢谢大家,现在我知道我的代码出了什么问题。