无论如何要用 public 变量填充用户窗体文本框?

Anyway to populate a userform textbox with a public variable?

我正在尝试使用 public 变量填充用户窗体上的文本框,以允许用户复制并粘贴到外部程序中。我可以将基本字符串传递到文本框中,但似乎无法传递变量。这是我当前的代码:

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 变量似乎没有将它们的值保存到用户窗体。 Public变量不够用吗?

上面代码的稍微改进版本可能看起来像这样

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的额外sheet用于您需要的配置值和具有以下功能的模块

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,因为这会破坏 class。请改用 Hide!使用 Unload 用户表单不再存在,您无法检索用户输入。