我想将参数传递给用户表单。我尝试的解决方案是设置我的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。
你有什么想法吗?
提前致谢
答案 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在你的问题的评论中所说的:你在那里有一个错字。 msMgs
和msMsg
不是同一个变量。始终在每个模块的开头使用Option Explicit
来防止此问题以及更多问题。