【发布时间】:2020-04-13 07:46:37
【问题描述】:
我正在尝试使用公共变量填充用户窗体上的文本框,以允许用户复制并粘贴到外部程序中。我可以将基本字符串传递到文本框中,但似乎无法传递变量。这是我当前的代码:
VBA 按钮单击
Option Explicit
Public PathConfig As String
Public BuildableLand As String
Public Sub Import_Click()
PathConfig = "TestConfig"
BuildableLand = "TestBuildable"
CopyPaste.Show
CopyPaste.ConfigText.Text = PathConfig
CopyPaste.BuildableLandText.Text = BuildableLand
End Sub
用户表单
文本框分别命名为“ConfigText”和“BuildableLandText”
用户表单代码
Private Sub ExitForm_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
CopyPaste.ConfigText.Text = PathConfig
CopyPaste.BuildableLandText.Text = BuildableLand
End Sub
当我单步执行代码时,PathConfig/BuildableLand 变量似乎并未将其值保留给用户表单。公共变量不够吗?
【问题讨论】:
-
尝试在
Module而不是表单中定义您的Public变量。 -
我的 excel 文件中的所有其他代码都依赖于位于各个工作表中的按钮 - 因此我将使用/传递的变量嵌入在各种工作表中(即对象)。我可以在不使用模块的情况下从对象传递到表单吗?
-
您为什么不想使用模块?如果表单是公开的,则所有表单都可以在那里“看到”它们。
-
我有很多现有的代码写入对象,包括上面定义的变量,我宁愿不将它们全部复制到模块中。我认为仅在模块中将各个变量声明为公共变量不足以解决我的问题。我只想简单地将一对变量从 VBA 复制到 Web 界面中。这是一个超级次要的便利,所以如果没有一种简单的方法可以将变量从对象中按钮上的代码传递到用户窗体,我将继续前进。
-
以@braX 所说的内容为基础。创建一个模块并将其命名为“MagicNumbers”。在此模块中声明所有公共常量。还将所有文字字符串和数字声明为公共常量。在那里(通过使用注释行)为全局变量创建一个部分。这将使您能够看到代码中交织在一起的所有“魔法”——然后您就可以开始修复它了。
标签: vba variables userform public