2015-09-17 40 views
0

我有一個窗體(MainForm)有2個子窗體,sfrmA & sfrmB。我需要從sfrmA調用sfrmB中的一個過程(ProcInB)。這些工作都沒有:如何更新另一個窗體的子窗體中的過程?

Forms!MainForm.sfrmB.Form.ProcInB 
Call MainForm.Forms.sfrmB.ProcInB 
Forms!MainForm![sfrmB].Form.ProcInB 
Call MainForm.Forms.sfrmB.ProcInB 
Call Forms.MainForm.ProcInB 

我也試過括號,報價等似乎沒有任何工作和窮舉搜索並沒有提供這種特定情況或解決方案。

希望有人有答案!

THX!

+0

是否將'ProcInB'定義爲'Public'? ...就像'Public Sub ProcInB()' – HansUp

+0

在即時窗口中,「Debug.Print Forms!MainForm!sfrmB.Form.Name」給你什麼? – HansUp

+0

錯誤信息:找不到sfrmB – monbois

回答

1

撥叫形式的程序(或任何類)模塊,你做

Call Form_sfrmB.ProcInB() 

當然ProcInB中()必須聲明爲公共

Form_<name>是如何命名錶單類模塊,您可以在VBA項目瀏覽器中看到它。

如果表單是另一種形式的子表單,則無關緊要。您嘗試的語法變體是用於在子表單上訪問控件,而不是函數。

+0

可以通過打開的表單實例而不是通過表單的模塊來調用表單中的公共過程。例如'Forms!frmStart.demo_combos'以該形式調用該過程而沒有錯誤。 – HansUp

+0

你是對的(像往常一樣)。儘管如此,對我而言,這感覺很奇怪。而且「Call Forms!frmStart.demo_combos'失敗(編譯錯誤)並不能幫助減輕這種感覺。 @HansUp – Andre

+0

謝謝,但它不起作用。程序/子程序返回錯誤信息「Object Required」。該子程序是公開的,但我甚至將它改爲公共函數,看看它是否會有所作爲,但事實並非如此。 – monbois

相關問題