2017-06-01 120 views
1

对不起,如果这不明确,但由于某种原因,我的代码最近停止工作,我不知道为什么。VBA - 定义一个用户表单稍后调用

基本上,我在我的工作中创建了一个excel vba程序来完成报告(例如炉子报告或树报告)。有一个封面表格,要求用户输入报告的各种细节(即参加者,日期,地址等)。一旦完成,他们然后选择一个报告来完成(他们可以从封面上进入5个不同的用户表单)。例如,如果他们选择Electrical,则他们可以选择General,Stove或Hot Water System报告(记住这一点)。换言之,他们选择了水暖,他们可以选择一般或热水系统报告。继承人我的问题...我有所有的用户形式(除封面页面)上的返回或返回按钮,我使用相同的用户表单为热水系统和一般报告电气和管道(因为文本框,复选框是相同的)。考虑到所有这些......(对不起....).....

我该如何定义要返回的用户表单(水暖或电气)呢?

如果需要可以邮编

+0

是的,你应该张贴您的代码,以便我们可以给你具体的反馈和方向。 – Graham

+0

你的意思是回到封面选择一个不同的用户表单?取决于你如何设计Userform,会有不同的方法。所以请张贴UserForm的代码和屏幕截图。 – PatricK

回答

0

您可以添加例如Parent财产给子窗体,所以孩子知道它的父母。 HTH。

有两种形式简单的例子:UserForm1UserForm2孩子

' This is parent Form 

Private child As UserForm2 

Private Sub UserForm_Initialize() 
    Set child = New UserForm2 
    Set child.Parent = Me ' here the parent is set so the child knows it 
End Sub 

Private Sub CommandButton1_Click() 
    Me.Hide 
    child.Show 
End Sub 

' This is Child Form which knows about it's parent 

Private m_parent As Object 

Public Property Get Parent() As Object 
    Set Parent = m_parent 
End Property 

Public Property Set Parent(ByVal vNewValue As Object) 
    Set m_parent = vNewValue 
End Property 

Private Sub CommandButton1_Click() 
    ' Go back to parent 
    Me.Hide 
    m_parent.Show 
End Sub 
+0

欣赏我使用以下解决方案结束的帮助。我将returnform声明为全局对象变量,并且每次按下按钮以更改用户窗体时就设置它。所以当我点击我调用的后退按钮时可以调用returnform.show。 – samtarrant

+0

是的,全局变量可以工作。您存储以前的用户表单,以便每个用户表单知道返回的位置。但我个人尽量不使用全局变量,但更喜欢面向对象的解决问题的方式。 – dee

相关问题