是否要用公共变量填充用户窗体文本框?

问题描述 投票:0回答:1

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

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'

enter image description here

用户代码

Private Sub ExitForm_Click()

Unload Me

End Sub

Private Sub UserForm_Initialize()

CopyPaste.ConfigText.Text = PathConfig
CopyPaste.BuildableLandText.Text = BuildableLand

End Sub

当我单步执行代码时,PathConfig / BuildableLand变量似乎没有将其值保存到用户窗体中。公共变量不够吗?

vba variables userform public
1个回答
0
投票

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

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时,用户表单不再存在,并且您无法检索用户输入。

© www.soinside.com 2019 - 2024. All rights reserved.