2017-06-01 59 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

相關問題