私有字符串变量未显示在文本标签vba中

时间:2018-04-24 07:53:32

标签: excel vba properties userform caption

我想将参数传递给用户表单。我尝试的解决方案是设置我的userform的自制属性(名称为InformationMissing),设置私有变量。 这是我的UserForm的代码

Private msMsg As String

Private Sub CommandButton1_Click()
    MsgBox msMsg
End Sub

Private Sub UserForm_Initialize()
    txtLabel1.Caption = "hello" & msMsg
End Sub

Property Let MyProp(sText As String)
    msMsg = sText
End Property

我在另一个子域中使用此Userform,将MyProp属性设置为String(" aa"在这种情况下):

Sub ShowFormProp()

    Dim myForm As InformationMissing
    Set myForm = New InformationMissing

    myForm.MyProp = "aa"
    myForm.Show

End Sub

我想在这里做的是拥有" helloaa"在我的UserForm中受到了重视,但我只得到了#34;你好"。但是,当我单击CommandButton1时,我得到了#34; aa"。 这意味着该属性已正确设置,但未传递给txtLabel1。

你有什么想法吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

如果您希望标题反映对私有字符串变量的更改,则

UserForm.Initialize不是放置txtLabel1.Caption = "hello" & msMsg的正确位置。在您访问任何表单属性之前,将始终执行Initialize

在您的情况下,一个好的解决方案是直接在属性过程中执行您想要的更改。

Property Let MyProp(sText As String)
    msMsg = sText
    ' You can also put the caption change in its own sub, if you want more things to happen when you change it
    txtLabel1.Caption = "hello" & msMsg
End Property

编辑:并反映@LatifaShi在你的问题的评论中所说的:你在那里有一个错字。 msMgsmsMsg不是同一个变量。始终在每个模块的开头使用Option Explicit来防止此问题以及更多问题。