用户表单在';通过命令VBA.Userform.Add(";UF";)加载的

用户表单在';通过命令VBA.Userform.Add(";UF";)加载的,vba,excel,excel-2007,userform,Vba,Excel,Excel 2007,Userform,我陷入了VBA编码的问题。有两个名为“UsersForm”和“Registration”的用户表单 在“UsersForm”中有一个名为CreateProfile的commandbutton,单击它应该会显示“注册”表单 为此,在一个模块中编写了一个名为“ShowNextUF”的过程,我在该模块中提供了如下所示的参数: Private Sub CreateProfile_Click() ' <----its an activex Command button of the userfor

我陷入了VBA编码的问题。有两个名为“UsersForm”和“Registration”的用户表单

在“UsersForm”中有一个名为CreateProfile的commandbutton,单击它应该会显示“注册”表单

为此,在一个模块中编写了一个名为“ShowNextUF”的过程,我在该模块中提供了如下所示的参数:

Private Sub CreateProfile_Click()  ' <----its an activex Command button of the userform "UsersForm"

 Call ShowNextUF("Registration", Me, True)

End Sub
现在的问题是:当我想检查userform“Registration”的文本框的值时,它就可以正常工作了

Private Sub tbStdName_Change()     '<---- A TextBox of "Registration" userform

 StudenName = UCase(tbStdName.Value)

End Sub
私有子tbStdName_Change()”@Arno van Boven

感谢您的友好信息,它让我想到“.Add”将在USerform中添加新集合…只是尝试了这个想法,它得到了解决

摆脱这种情况的方法是将参数作为对象而不是字符串传递

Private Sub CreateProfile_Click() 
   Call ShowNextUF(Registration, Me, True) 
End Sub 
在模块中:

Sub ShowNextUF(ByVal NxtUF As Object, ByVal PrevUF As Object, Optional ByVal UnLd As Boolean = False) 
   If UnLd Then Unload PrevUF 
   NxtUF.Show 
End Sub 
再次感谢。。。
干杯

Add将向userforms集合添加新的userform。也许您正在寻找Show?@ArnovanBoven,感谢您的友好回复…我正在“ShowNextUF”过程中将字符串参数作为“NxtUF”传递,以便加载和激活下一个用户表单。。。我的项目中有大约32个用户表单,这就是为什么我调用这个过程来最小化代码大小。。。请指导我如何使用名称(@ArnovanBoven是的,我最终在寻找show!但我需要将一个对象设置为VBA userform,该对象可以通过“.show”命令显示…将参数“NxtUF”作为userform帮助传递吗?我的意思是如果编写类似以下内容:Private Sub CreateProfile_Click()调用ShowNextUF(注册,Me,True)结束子模块和模块内:子模块显示NEXTUF(ByVal NxtUF作为对象,ByVal PREVEUF作为对象,可选ByVal UnLd作为布尔值=False),如果UnLd,则卸载PREVEUF NxtUF。显示结束Sub@TinMan不是“.Add”正在添加新实例?否则,当调用该实例的默认名称时,为什么该实例会过期(例如:Userform.TextBox.Value)在它自己的模块中!我不太确定我是否遵循您的推理,但想法是您添加一次Userform,然后在需要时显示/隐藏它。
Private Sub CreateProfile_Click() 
   Call ShowNextUF(Registration, Me, True) 
End Sub 
Sub ShowNextUF(ByVal NxtUF As Object, ByVal PrevUF As Object, Optional ByVal UnLd As Boolean = False) 
   If UnLd Then Unload PrevUF 
   NxtUF.Show 
End Sub