我正在尝试使用公共变量填充用户窗体上的文本框,以允许用户复制并粘贴到外部程序中。我可以将基本字符串传递到文本框中,但似乎无法传递变量。这是我当前的代码:
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
Userform
文本框分别命名为'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变量似乎没有将其值保存到用户窗体中。公共变量不够吗?
上面代码的稍微改进的版本可能看起来像这样
Option Explicit
Private Sub Import_Click()
Dim frm As CopyPaste
Set frm = New CopyPaste
With frm
.ConfigText.Text = PathConfig
.BuildableLandText.Text = BuildableLand
.Show
End With
End Sub
另外为您需要的配置值创建一个代号为shConf
的工作表,以及一个具有以下功能的模块
Option Explicit
Function PathConfig() As String
'Using Names instead of a direct cell reference would probably better
PathConfig = shConf.Range("A1")
End Function
Function BuildableLand() As String
BuildableLand = shConf.Range("A2")
End Function
在用户窗体初始化事件中不需要代码。
您还应该在用户窗体的退出事件中重新考虑使用Unload
,因为这会破坏该类。请改用Hide
!使用Unload
时,用户表单不再存在,并且您无法检索用户输入。